Python-future: virtualenv + python-future =壊れたvirtualenv

作成日 2015年05月20日  ·  18コメント  ·  ソース: PythonCharmers/python-future

最も単純な複製:

$ 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.

最も参考になるコメント

Ubuntu 14.04の場合、この組み合わせは私にとってはうまくいきました。

  • Python 3.4用のpipをインストールします(https://pip.pypa.io/en/stable/installing/):
$ wget https://bootstrap.pypa.io/get-pip.py -O - | sudo python3.4
  • 古いvirtualenvを置き換えます(python2.7から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
  • CまたはC ++で記述されたPython拡張機能からのコンパイルエラーを回避するには( ref ):
$ 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は美しく実行されます:)

全てのコメント18件

これは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に問題なく固定し始めました。

fwiw、これはvirtualenv側からの動作を可能にしたコミットです: https ://github.com/pypa/virtualenv/commit/73d46a83f6b26155398310d8dfd251015c751030

ただし、debianで問題(?)が発生したため、後で元に戻されました。

この問題も解決するvirtualenv用の独自のラッパースクリプトを作成しました: https ://github.com/asottile/virtualenv-hax

同じ問題がありました。 virtualenv 12.0.2にダウングレードすると、問題が解決しました。

同じ問題が発生しています。 私のバージョンは13.1.2です。 valerymelouが述べたように、12.0.2にダウングレードする必要がありました。

12.0.2へのダウングレードも私のために働いた

彼らはバグを修正するつもりですか、それとも何ですか?

Ubuntu 14.04の場合、この組み合わせは私にとってはうまくいきました。

  • Python 3.4用のpipをインストールします(https://pip.pypa.io/en/stable/installing/):
$ wget https://bootstrap.pypa.io/get-pip.py -O - | sudo python3.4
  • 古いvirtualenvを置き換えます(python2.7から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
  • CまたはC ++で記述されたPython拡張機能からのコンパイルエラーを回避するには( ref ):
$ 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プロジェクトで回避されました

このページは役に立ちましたか?
0 / 5 - 0 評価