Opened 7 years ago
Last modified 3 years ago
#13051 reopened defect
The initenv process of trac-admin requires more than just 'psycopg2' and 'trac'
| Reported by: | Owned by: | ||
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | general | Version: | 1.2.2 |
| Severity: | major | Keywords: | setuptools pip wheel |
| Cc: | Branch: | ||
| Release Notes: | |||
| API Changes: | |||
| Internal Changes: | |||
Description (last modified by )
I figured out the initenv process of trac-admin requires more than just 'psycopg2' and 'trac' to use the postgresql driver, the previous week of last week.
Either it is a bug or the wiki page for database backends is missing an important line (DatabaseBackend).
I somehow figured out how to make it work after some digging: I had to also install TracTags from Python Package Index. otherwise I'd get messages like: TracError: Unsupported database type "postgres"
What I did:
useradd -mrd /var/lib/g9-trac g9-trac mkdir -p /var/log/g9 apt install -y virtualenv # virtualenv -p /usr/bin/python3 /var/lib/g9-trac/ve-trac su - g9-trac virtualenv -p /usr/bin/python2 /var/lib/g9-trac/ve-trac source /var/lib/g9-trac/ve-trac/bin/activate pip install trac #it's weird the psycopg2 driver worked only after I installed TracTags pip install psycopg2 trac-admin /var/lib/g9-trac/trac-g9 initenv Gxxxxx9 'postgres://g9-trac:passphrase32!@localhost:5432/trac-g9'
Thank you, Gunwoo Gim
Attachments (0)
Change History (7)
comment:1 by , 7 years ago
| Description: | modified (diff) |
|---|---|
| Priority: | high → normal |
| Resolution: | → cantfix |
| Status: | new → closed |
comment:2 by , 7 years ago
I do know how to SOMEHOW install it with the postgresql driver now. I thought I'd love to help the developers fix this issue.
Asking, that's how I figured out how to successfully install/initenv, a guy showed his dockerfile and I tried some of the packages in the recipe to figure out TracTags somehow helps with the utilization of the postgresql driver. I got the help on the irc channel.
Jun, I'd like to ask you if you thought I did something wrong in the failed installation, and trac had no bug.
comment:3 by , 7 years ago
| Component: | database backend → general |
|---|---|
| Keywords: | setuptools pip wheel added; postgresql removed |
| Resolution: | cantfix |
| Status: | closed → reopened |
Well, I get the same error with fresh virtualenv.
$ /usr/bin/virtualenv -p /usr/bin/python2.7 /dev/shm/trac-1.2.2
Running virtualenv with interpreter /usr/bin/python2.7
New python executable in /dev/shm/trac-1.2.2/bin/python2.7
Also creating executable in /dev/shm/trac-1.2.2/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ source /dev/shm/trac-1.2.2/bin/activate
(trac-1.2.2) $ type pip
pip is /dev/shm/trac-1.2.2/bin/pip
(trac-1.2.2) $ pip install trac
Collecting trac
Using cached https://files.pythonhosted.org/packages/85/67/f1549b34fc405d10d09eb9eb52f71cd6b790328177e33e3993a9a08b22b7/Trac-1.2.2-py2-none-any.whl
Requirement already satisfied: setuptools>=0.6 in /dev/shm/trac-1.2.2/lib/python2.7/site-packages (from trac) (39.2.0)
Collecting Genshi>=0.6 (from trac)
Using cached https://files.pythonhosted.org/packages/c5/2f/34493b2286561d0ea003c568a6c80343eee3c9975a69964d22ce8501dd3f/Genshi-0.7.tar.gz
Installing collected packages: Genshi, trac
Running setup.py install for Genshi ... done
Successfully installed Genshi-0.7 trac-1.2.2
(trac-1.2.2) $ pip install psycopg2
Collecting psycopg2
Downloading https://files.pythonhosted.org/packages/7c/e6/d5161798a5e8900f24216cb730f2c2be5e4758a80d35c8588306831c0c99/psycopg2-2.7.5-cp27-cp27mu-manylinux1_x86_64.whl (2.7MB)
100% |████████████████████████████████| 2.7MB 155kB/s
Installing collected packages: psycopg2
Successfully installed psycopg2-2.7.5
(trac-1.2.2) $ pip list DEPRECATION: The legacy format has been deprecated and will be removed in the future.
Genshi (0.7)
pip (10.0.1)
pkg-resources (0.0.0)
psycopg2 (2.7.5)
setuptools (39.2.0)
Trac (1.2.2)
wheel (0.31.1)
(trac-1.2.2) $ type trac-admin
trac-admin is /dev/shm/trac-1.2.2/bin/trac-admin
(trac-1.2.2) $ trac-admin /dev/shm/trac-1.2.2-tracenv initenv 'My Project' 'postgres://tracuser:password@localhost:5432/trac?schema=trac_1_2_2'
Creating and Initializing Project
Initenv for '/dev/shm/trac-1.2.2-tracenv' failed.
Failed to create environment.
Unsupported database type "postgres"
Traceback (most recent call last):
File "/dev/shm/trac-1.2.2/local/lib/python2.7/site-packages/trac/admin/console.py", line 500, in do_initenv
options=options)
File "/dev/shm/trac-1.2.2/local/lib/python2.7/site-packages/trac/core.py", line 136, in __call__
self.__init__(*args, **kwargs)
File "/dev/shm/trac-1.2.2/local/lib/python2.7/site-packages/trac/env.py", line 300, in __init__
self.create(options)
File "/dev/shm/trac-1.2.2/local/lib/python2.7/site-packages/trac/env.py", line 592, in create
DatabaseManager(self).init_db()
File "/dev/shm/trac-1.2.2/local/lib/python2.7/site-packages/trac/db/api.py", line 337, in init_db
connector, args = self.get_connector()
File "/dev/shm/trac-1.2.2/local/lib/python2.7/site-packages/trac/db/api.py", line 615, in get_connector
scheme=scheme))
TracError: Unsupported database type "postgres"
I noticed UndefinedEnvironmentName raised when loading trac.db.postgres_backend. The issue is due to pip, setuptools, wheel or Trac-1.2.2-py2-none-any.whl file.
(trac-1.2.2) $ cat > /dev/shm/trac-1.2.2/inherit.ini
[logging]
log_type = stderr
(trac-1.2.2) $ trac-admin /dev/shm/trac-1.2.2-tracenv initenv --inherit=/dev/shm/trac-1.2.2/inherit.ini 'My Project' 'postgres://tracuser:password@localhost:5432/trac?schema=trac_1_2_2'
Creating and Initializing Project
15:19:45 Trac[env] INFO: -------------------------------- environment startup [Trac 1.2.2] --------------------------------
...
15:19:45 Trac[loader] DEBUG: Loading plugin "trac.db.postgres" from "/dev/shm/trac-1.2.2/lib/python2.7/site-packages"
15:19:45 Trac[loader] ERROR: Skipping "trac.db.postgres = trac.db.postgres_backend [postgresql]":
Traceback (most recent call last):
File "/dev/shm/trac-1.2.2/local/lib/python2.7/site-packages/trac/loader.py", line 68, in _load_eggs
entry.load(require=True)
File "/dev/shm/trac-1.2.2/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2228, in load
self.require(*args, **kwargs)
File "/dev/shm/trac-1.2.2/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2245, in require
items = working_set.resolve(reqs, env, installer)
File "/dev/shm/trac-1.2.2/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 808, in resolve
if not req_extras.markers_pass(req):
File "/dev/shm/trac-1.2.2/local/lib/python2.7/site-packages/pkg_resources/__init__.py", line 993, in markers_pass
return not req.marker or any(extra_evals) or req.marker.evaluate()
File "/dev/shm/trac-1.2.2/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/markers.py", line 278, in evaluate
return _evaluate_markers(self._markers, current_environment)
File "/dev/shm/trac-1.2.2/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/markers.py", line 203, in _evaluate_markers
lhs_value = _get_env(environment, lhs.value)
File "/dev/shm/trac-1.2.2/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/markers.py", line 185, in _get_env
"{0!r} does not exist in evaluation environment.".format(name)
UndefinedEnvironmentName: 'extra' does not exist in evaluation environment.
...
Work around is to reinstall Trac using tarball.
$ pip uninstall -y Trac $ pip install https://download.edgewall.org/trac/Trac-1.2.2.tar.gz $ trac-admin /dev/shm/trac-1.2.2-tracenv initenv --inherit=/dev/shm/trac-1.2.2/inherit.ini 'My Project' 'postgres://tracuser:password@localhost:5432/trac?schema=trac_1_2_2' ... The latest documentation can also always be found on the project website: http://trac.edgewall.org/ Congratulations!
comment:4 by , 7 years ago
Another work around is to downgrade to setuptools 39.1.0.
$ pip install setuptools==39.1.0
comment:5 by , 7 years ago
Filed in https://github.com/pypa/setuptools/issues/1411.
setuptools 40.0.0 is released but the issue is not fixed.
comment:6 by , 7 years ago
| Description: | modified (diff) |
|---|
comment:7 by , 3 years ago
maybe some other module interferes with your configuration.
E.g. I had to downgrade mercurial to 3.9.2, then postgres worked again



InstallationIssue. Please ask on the mailing list.