Opened 6 years ago
Last modified 2 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 , 6 years ago
Description: | modified (diff) |
---|---|
Priority: | high → normal |
Resolution: | → cantfix |
Status: | new → closed |
comment:2 by , 6 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 , 6 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 , 6 years ago
Another work around is to downgrade to setuptools 39.1.0.
$ pip install setuptools==39.1.0
comment:5 by , 6 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 , 6 years ago
Description: | modified (diff) |
---|
comment:7 by , 2 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.