Python-future: virtualenv + python-future = virtualenv rusak

Dibuat pada 20 Mei 2015  ·  18Komentar  ·  Sumber: PythonCharmers/python-future

Reproduksi paling sederhana:

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

Komentar yang paling membantu

Untuk Ubuntu 14.04, kombinasi ini berfungsi untuk saya:

  • Instal pip untuk python 3.4 (https://pip.pypa.io/en/stable/installing/):
$ wget https://bootstrap.pypa.io/get-pip.py -O - | sudo python3.4
  • Ganti virtualenv lama (python 2.7 ke python 3.4):
$ sudo pip3.4 install virtualenv
  • Hanya untuk memeriksa:
$ head -n 1 /usr/local/bin/virtualenv
#!/usr/bin/python3
  • Sekarang, perintah berikut akan dijalankan:
$ 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
  • Untuk menghindari kesalahan kompilasi dari ekstensi Python yang ditulis dalam C atau C++ ( 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

Sekarang, tox berjalan dengan indah :)

Semua 18 komentar

Ini adalah bug di virtualenv karena mengacaukan jalur modul 2.7 dan 3.4. Ada beberapa masalah serupa yang dilaporkan di hulu:
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

Lebih baik menggunakan pyvenv yang disertakan dengan Python 3.3+ untuk saat ini.

pyvenv sebenarnya bukan opsi untuk basis kode yang menargetkan 2+3 (terutama mengingat banyak kasus tepi yang pyvenv tidak cukup benar untuknya (dan tidak dapat diperbaiki karena terdampar di stdlib)). Akankah ada rencana potensial untuk membagi bit yang berguna (backport, gerakan, dll.) dari bayangan nama modul py3?

Terima kasih telah menyebutkan ini, Anthony. Saya pikir memiliki folder Python 2.7 site-packages yang dapat diakses oleh juru bahasa Python 3.4 akan menyebabkan banyak kerusakan secara umum. Jadi saya setuju dengan Elliott bahwa ini adalah bug virtualenv. (Mungkin pelapisan ulang bug #673.)

Saya harus mengakui bahwa saya belum pernah menggunakan virtualenv selama 2 tahun (sejak saya menemukan conda). Saya akan mencoba mencari waktu untuk mengutak-atiknya lebih jauh untuk melihat apa yang terjadi. Tapi, membaca https://github.com/pypa/virtualenv/pull/697 , saya agak curiga itu sarang burung dari peretasan rapuh ...

Bisakah Anda menjawab pertanyaan itu? Mungkin baik-baik saja untuk menutup karena tidak akan diperbaiki setelah menjawab, saya kira.

Akankah ada rencana potensial untuk membagi bit yang berguna (backport, gerakan, dll.) dari bayangan nama modul py3?

@qulogic @edschofield Ini sebenarnya adalah efek dari penambangan pythonpath yang kami lakukan di perusahaan kami. Kami telah memperhitungkannya.

muning*

@bukzor sebenarnya tidak, lihat reproduksi saya

Saya baru saja mengalami masalah ini, sepertinya diperkenalkan di virtualenv 12.04, saya sudah mulai menyematkan ke virtualenv 12.02 tanpa masalah

fwiw, ini adalah komit yang memungkinkannya berfungsi dari sisi virtualenv: https://github.com/pypa/virtualenv/commit/73d46a83f6b26155398310d8dfd251015c751030

Namun dikembalikan kemudian karena menyebabkan masalah (?) pada debian.

Saya telah membuat skrip pembungkus saya sendiri untuk virtualenv yang juga memecahkan masalah ini: https://github.com/asottile/virtualenv-hax

Punya masalah yang sama. Menurunkan versi ke virtualenv 12.0.2 memecahkan masalah.

Mengalami masalah yang sama. Versi saya adalah 13.1.2. Harus menurunkan versi ke 12.0.2 seperti yang disebutkan valerymelou.

menurunkan ke 12.0.2 bekerja untuk saya juga

Apakah mereka akan memperbaiki bug atau apa?

Untuk Ubuntu 14.04, kombinasi ini berfungsi untuk saya:

  • Instal pip untuk python 3.4 (https://pip.pypa.io/en/stable/installing/):
$ wget https://bootstrap.pypa.io/get-pip.py -O - | sudo python3.4
  • Ganti virtualenv lama (python 2.7 ke python 3.4):
$ sudo pip3.4 install virtualenv
  • Hanya untuk memeriksa:
$ head -n 1 /usr/local/bin/virtualenv
#!/usr/bin/python3
  • Sekarang, perintah berikut akan dijalankan:
$ 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
  • Untuk menghindari kesalahan kompilasi dari ekstensi Python yang ditulis dalam C atau C++ ( 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

Sekarang, tox berjalan dengan indah :)

Hai teman-teman, saya melihat pendapat Anda, dan rekomendasi fernandojunior berfungsi untuk saya, tetapi sekarang saya memperbarui virtualenv saya ke 14.0.5 dan masalahnya diperbaiki dalam versi ini, saat ini saya bekerja di Host saya dengan linuxmint 17.3 x64

Apa yang harus dilakukan ketika mendapatkan kesalahan yang sama tetapi menggunakan lingkungan conda?

Ditutup karena percakapan ini terhenti dan tampaknya tidak ada tindakan yang tersisa untuk python-future . Silakan buka kembali jika saya mungkin salah :)

ya ya! Ini berhasil di proyek virtualenv

Apakah halaman ini membantu?
0 / 5 - 0 peringkat