最も単純な複製:
$ 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.
これはvirtualenv
のバグです。これは、2.7と3.4のモジュールパスを混乱させているためです。 アップストリームで報告された同様の問題がいくつかあります。
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
今のところ、Python 3.3以降に付属しているpyvenv
を使用することをお勧めします。
pyvenvは、実際には2 + 3をターゲットとするコードベースのオプションではありません(特に、pyvenvが完全に正しくない(そしてstdlibで取り残されているために修正できない)多くのエッジケースを考慮すると)。 py3モジュール名のシャドウイングから有用なビット(バックポート、移動など)を分割する潜在的な計画はありますか?
これについて言及してくれてありがとう、アンソニー。 Python 3.4インタープリターがPython2.7 site-packages
フォルダーにアクセスできるようにすると、一般に多くの破損が発生すると思います。 したがって、これはvirtualenvのバグであるというElliottに同意します。 (おそらくバグ#673のリサーフェシングです。)
私は(condaを発見してから)2年間virtualenvを使用していないことを認めなければなりません。 何が起こっているのかを確認するために、さらにいじくり回す時間を見つけようとします。 しかし、 https://github.com/pypa/virtualenv/pull/697を読んで、私はむしろそれがもろいハックの鳥の巣であると思います...
質問に答えてもらえますか? おそらく答えた後、wontfixとして閉じるのは問題ないと思います。
py3モジュール名のシャドウイングから有用なビット(バックポート、移動など)を分割する潜在的な計画はありますか?
@qulogic @edschofieldこれは、実際には、当社で行っているpythonpathマイニングの効果です。 それ以来、私たちはそれを除外しました。
むしゃむしゃ*
@bukzor実際にはそうではありません、私の複製を見てください
この問題が発生しました。virtualenv12.04で導入されたようですが、virtualenv12.02に問題なく固定し始めました。
同じ問題がありました。 virtualenv 12.0.2にダウングレードすると、問題が解決しました。
同じ問題が発生しています。 私のバージョンは13.1.2です。 valerymelouが述べたように、12.0.2にダウングレードする必要がありました。
12.0.2へのダウングレードも私のために働いた
彼らはバグを修正するつもりですか、それとも何ですか?
Ubuntu 14.04の場合、この組み合わせは私にとってはうまくいきました。
$ 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は美しく実行されます:)
こんにちは皆さん、私はあなたの意見を見ました、そしてfernandojuniorの推薦は私のために働きます、しかし今私は私のvirtualenvを14.0.5に更新し、問題はこのバージョンで修正されました、現在私はlinuxmint 17.3x64で私のホストで働いています
同じエラーが発生したが、conda環境を使用している場合はどうすればよいですか?
この会話が停止し、 python-future
のアクションが残っていないように見えるため、終了します。 間違えた場合は再度開いてください:)
うんうん! これはvirtualenv
プロジェクトで回避されました
最も参考になるコメント
Ubuntu 14.04の場合、この組み合わせは私にとってはうまくいきました。
今、toxは美しく実行されます:)