Einfachster Nachbau:
$ virtualenv venv
$ ./venv/bin/pip install future virtualenv
Collecting future
Using cached future-0.14.3.tar.gz
Collecting virtualenv
Using cached virtualenv-12.1.1-py2.py3-none-any.whl
Installing collected packages: future, virtualenv
Running setup.py install for future
Successfully installed future-0.14.3 virtualenv-12.1.1
$ ./venv/bin/virtualenv -ppython3.4 venv34
Running virtualenv with interpreter /usr/bin/python3.4
Traceback (most recent call last):
File "/home/anthony/venv/local/lib/python2.7/site-packages/virtualenv.py", line 8, in <module>
import base64
File "/usr/lib/python3.4/base64.py", line 9, in <module>
import re
File "/usr/lib/python3.4/re.py", line 336, in <module>
import copyreg
File "/home/anthony/venv/lib/python2.7/site-packages/copyreg/__init__.py", line 7, in <module>
raise ImportError('This package should not be accessible on Python 3. '
ImportError: This package should not be accessible on Python 3. Either you are trying to run from the python-future src folder or your installation of python-future is corrupted.
Dies ist ein Fehler in virtualenv
, da er die 2.7- und 3.4-Modulpfade durcheinander bringt. Upstream wurden mehrere ähnliche Probleme gemeldet:
https://github.com/pypa/virtualenv/issues/745
https://github.com/pypa/virtualenv/issues/671
https://github.com/pypa/virtualenv/issues/625
https://github.com/pypa/virtualenv/pull/697
Verwenden Sie vorerst besser pyvenv
, das mit Python 3.3+ geliefert wird.
pyvenv ist nicht wirklich eine Option für eine Codebasis, die auf 2+3 abzielt (insbesondere angesichts der vielen Randfälle, für die pyvenv nicht ganz korrekt ist (und nicht behoben werden kann, weil sie in der stdlib gestrandet sind)). Würde es jemals Pläne geben, die nützlichen Bits (Backports, Verschiebungen usw.) aus dem Shadowing von py3-Modulnamen zu trennen?
Danke, dass du das erwähnt hast, Anthony. Ich denke, dass ein Python 2.7 site-packages
-Ordner, auf den ein Python 3.4-Interpreter zugreifen kann, im Allgemeinen zu vielen Brüchen führen wird. Daher stimme ich Elliott zu, dass dies ein Virtualenv-Fehler ist. (Vielleicht ein Wiederauftauchen von Bug #673.)
Ich muss zugeben, dass ich virtualenv seit 2 Jahren nicht mehr benutzt habe (seit ich Conda entdeckt habe). Ich werde versuchen, etwas Zeit zu finden, um weiter daran zu basteln, um zu sehen, was los ist. Aber wenn ich https://github.com/pypa/virtualenv/pull/697 lese, vermute ich eher, dass es sich um ein Vogelnest von spröden Hacks handelt ...
Könntest du auf die Frage eingehen? Wahrscheinlich gut zu schließen, da wontfix nach der Beantwortung, würde ich vermuten.
Würde es jemals Pläne geben, die nützlichen Bits (Backports, Verschiebungen usw.) aus dem Shadowing von py3-Modulnamen zu trennen?
@qulogic @edschofield Dies ist eigentlich ein Effekt des Pythonpath-Minings, das wir in unserem Unternehmen betreiben. Wir haben es inzwischen ausgeklammert.
mungen*
@bukzor ist es eigentlich nicht, siehe meine Reproduktion
Ich bin gerade auf dieses Problem gestoßen, es sieht so aus, als ob es in virtualenv 12.04 eingeführt wurde, ich habe ohne Probleme mit dem Anheften an virtualenv 12.02 begonnen
fwiw, dies ist das Commit, das es ermöglicht hat, von der Seite von virtualenv aus zu arbeiten: https://github.com/pypa/virtualenv/commit/73d46a83f6b26155398310d8dfd251015c751030
Es wurde jedoch später zurückgesetzt, weil es Probleme (?) unter Debian verursachte.
Ich habe mein eigenes Wrapper-Skript für virtualenv erstellt, das dieses Problem ebenfalls löst: https://github.com/asottile/virtualenv-hax
Hatte das gleiche Problem. Ein Downgrade auf virtualenv 12.0.2 löste das Problem.
Habe das gleiche Problem. Meine Version ist 13.1.2. Musste auf 12.0.2 heruntergestuft werden, wie Valerymelou erwähnte.
Ein Downgrade auf 12.0.2 hat bei mir auch funktioniert
Werden sie den Fehler beheben oder was?
Für Ubuntu 14.04 hat diese Kombination für mich funktioniert:
$ wget https://bootstrap.pypa.io/get-pip.py -O - | sudo python3.4
$ sudo pip3.4 install virtualenv
$ head -n 1 /usr/local/bin/virtualenv
#!/usr/bin/python3
$ virtualenv venv34
Using base prefix '/usr'
New python executable in venv34/bin/python3
Also creating executable in venv34/bin/python
Installing setuptools, pip, wheel...done.
$ ./venv34/bin/pip install virtualenv
Collecting virtualenv
Using cached virtualenv-13.1.2-py2.py3-none-any.whl
Installing collected packages: virtualenv
Successfully installed virtualenv-13.1.2
$ ./venv34/bin/virtualenv -p python venv
Running virtualenv with interpreter /usr/bin/python
New python executable in venv/bin/python
Installing setuptools, pip, wheel...done.
$ /usr/bin/python --version
Python 2.7.6
$ ./venv/bin/pip install future virtualenv
Collecting future
Collecting virtualenv
Using cached virtualenv-13.1.2-py2.py3-none-any.whl
Installing collected packages: future, virtualenv
Successfully installed future-0.15.2 virtualenv-13.1.2
$ ./venv34/bin/pip install future
Collecting future
Installing collected packages: future
Successfully installed future-0.15.2
$ sudo apt-get update
$ sudo apt-get install -y build-essential
$ sudo apt-get install -y python3.4-dev
$ sudo apt-get install -y python3-software-properties
Tox läuft jetzt wunderbar :)
Hallo Leute, ich habe eure Meinungen gesehen, und Fernandojunior-Empfehlungen funktionieren für mich, aber jetzt aktualisiere ich meine Virtualenv auf 14.0.5 und die Probleme sind in dieser Version behoben, derzeit arbeite ich in meinem Host mit Linuxmint 17.3 x64
Was tun, wenn derselbe Fehler auftritt, aber Conda-Umgebungen verwendet werden?
Wird geschlossen, da diese Konversation ins Stocken geraten ist und es anscheinend keine verbleibende Aktion für python-future
gibt. Bitte nochmal öffnen falls ich mich irre :)
Yep Yep! Dies wurde im Projekt virtualenv
umgangen
Hilfreichster Kommentar
Für Ubuntu 14.04 hat diese Kombination für mich funktioniert:
Tox läuft jetzt wunderbar :)