Le 14/06/2012 11:20, Ralf Hauenschild a écrit :
Am 14.06.2012 10:58, schrieb Alexandre Garel:
Le 14/06/2012 10:06, Ralf Hauenschild a écrit :
Am 14.06.2012 09:18, schrieb Marius Gedminas:
On Wed, Jun 13, 2012 at 10:58:01PM +0200, Ralf Hauenschild wrote:
Am 13.06.2012 19:36, schrieb Alexandre Garel:
Le 13/06/2012 18:57, Ralf Hauenschild a écrit :
Hello guys,

i've been desperately trying to install ZODB3 via the following ways:
- easy_install ZODB3
- installation of Zope2
- manual installation of ZODB3, preceeded by installation of the
requested packages from pypi

I'm using Ubuntu and Python 2.6.

Whe trying to import ZODB, I'm still getting the following error:

Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41)
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
import ZODB
Traceback (most recent call last):
  File "<stdin>", line 1, in<module>
line 28, in<module>
    from DB import DB, connection
line 28, in<module>
    from ZODB.Connection import Connection
line 33, in<module>
    from ZODB.blob import Blob, rename_or_copy_blob,
line 35, in<module>
    from ZODB.POSException import POSKeyError
line 71, in<module>
    class ConflictError(POSError,
AttributeError: 'module' object has no attribute 'TransientError'
You need a newer version of the 'transaction' package.  Unfortunately
the changelog athttp://pypi.python.org/pypi/transaction  doesn't say
which version added TransientError, but why not get the latest one?

Can anybody help me, please?
The problem may be  with a system wide installed version of transaction.

I would say, try in a virtualenv with no site packages :

$ virtualenv -p /usr/bin/python2.6 --no-site-packages myproject
$ cd myproject
$ . bin/activate
$ pip install ZODB3

Hope this helps,
Unfortunately, the error remains :(

You mean in the global python ? For sure ! My goal was to make it work in the virtualenv.

[-- snip --]
Any further ideas?
Python path is set in the global environment. In the virtualenv, it was not set, but everything worked there anyway.

You have a non compatible version of transaction installed globally, so you won't run ZODB3 with your global environment. So Install / develop your software in the isolated virtualenv. Is there a problem with that ?

If you need it for system script, the shebang just have to use the virtualenv python interpreter : #! /path/to/virtualenv/bin/python.


Is there a way to uninstall the incompatible transaction version and install the correct one? It would be very undesirable to use "#! /path/to/virtualenv/bin/python" in every skript as we have a lot of other imports, packages, modules... All this should be organized in the same way. For our customers, it would be very annoying to keep all the necessary steps in mind to make it work.
Is it possible to fix this problem?

I think the transaction package was installed by the package manager of your system. On debian this is python-transaction. Most of the time it was installed for another package needs it (your package manager shall tell you which).

You may decide to ship with a certain distribution, and in this case you have to use their packages for ZODB, or an older ZODB version compatible with installed transaction package.

But installing thinks in virtualenv is most of the time sane as it keeps things under control and avoid conflict between products on same system.

If you give more detail on your target environment maybe someone can give less general advices.

Hope this helps,

For more information about ZODB, see http://zodb.org/

ZODB-Dev mailing list  -  ZODB-Dev@zope.org

Reply via email to