Virtualenv: site.py tidak kompatibel dengan python 2.7

Dibuat pada 9 Nov 2012  ·  24Komentar  ·  Sumber: pypa/virtualenv

Kami menggunakan python 2.7 secara eksklusif dan merupakan kejutan untuk mengetahui hari ini bahwa site.py di semua env virtual dengan python 2.7 menggunakan site.py py2.6 yang tidak memiliki banyak fungsi baru yang ditambahkan di python 2.7.

Komentar yang paling membantu

Sebagai solusinya: python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" berhasil menemukan lokasi direktori paket situs Python saya

Semua 24 komentar

dapatkah Anda memberikan contoh apa yang tidak berhasil untuk Anda?

site.getsitepackages() tidak berfungsi.

Direproduksi di OS X:

$ virtualenv -p python2.7 ve
$ ./ve/bin/python -c 'import site; print(getattr(site, "getsitepackages"))'
Traceback (most recent call last):
  File "<string>", line 1, in <module>
AttributeError: 'module' object has no attribute 'getsitepackages'

Menjalankan di luar venv bekerja untuk saya -

``` $ python -c 'import site; print(getattr(site, "getsitepackages"))' <function getsitepackages at 0x104198410>

``````

$ ./ve/bin/python -c 'impor situs; cetak (situs. file )'
/private/tmp/ve/lib/python2.7/site.pyc
$ python -c 'impor situs; print( site.file )'/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site.pyc

We ship our own `./virtualenv_embedded/site.py`

Pertimbangkan untuk memperbarui (dan memastikan kompatibilitas mundur) site.py

Saya tidak berpikir ini harus ditandai sebagai pemblokir rilis. meskipun akan sangat bagus untuk mendukung file site.py yang kompatibel dengan fitur, kekurangan ini sudah seperti ini selama bertahun-tahun.

"kekurangan ini sudah seperti ini selama bertahun-tahun". Dan ya ampun, itu masih sakit ... :(
Pertimbangkan untuk memperbaiki ini, thx

Ini menggigit saya hari ini; akan sangat, sangat bagus untuk mendapatkan site.py yang diperbarui termasuk dalam virtualenv karena versi 2.6 yang lama tidak memiliki hal-hal seperti site.getusersitepackages() .

Itu menggigit saya juga, dan itu membuat saya lengah. Sekarang saya bahkan bertanya-tanya apa file lain yang berbeda dari sistem python (terutama ketika menggunakan --system-site-packages ) dan "bug" apa yang menunggu…

Masih valid menggunakan virtualenv 13.1.2 dengan Python 2.7.6, dan itu menghalangi beberapa pekerjaan dev yang saya lakukan.

Berikut beberapa biola interaktif:

getsitepackages tidak ada di virtualenv
$ virtualenv --version
13.1.2
$ virtualenv test
New python executable in test/bin/python
Installing setuptools, pip, wheel...done.
$ source test/bin/activate
$ which python
/home/user/test/bin/python
$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> 'getsitepackages' in dir(site)
False
>>> site.getsitepackages()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'getsitepackages'
>>>
getsitepackages hadir dalam sistem Python
$ deactivate
$ python
Python 2.7.6 (default, Jun 22 2015, 17:58:13)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> 'getsitepackages' in dir(site)
True
>>> site.getsitepackages()
['/usr/local/lib/python2.7/dist-packages', '/usr/lib/python2.7/dist-packages']
>>>

Sunting: woah ...... Saya baru saja membaca: https://github.com/pypa/virtualenv/pull/697
Saya pikir waktu mungkin lebih baik dihabiskan untuk mengatasi akar penyebab, daripada gejala spesifik ini. Bergantung pada bagaimana penulisan ulang berjalan, saya lebih dari bersedia untuk menunggu perubahan apa pun yang perlu terjadi untuk menyelesaikan masalah ini, demi perubahan yang dibahas dalam penulisan ulang.

Komentar Asli:
Saya juga baru saja digigit oleh yang satu ini.

# Tried with and without --system-site-packages

[username@hostname] ~/dir $ virtualenv --system-site-packages venv
Using base prefix '/usr'
New python executable in venv/bin/python3.4
Also creating executable in venv/bin/python
Installing setuptools, pip, wheel...done.
[username@hostname] ~/dir $ venv/bin/python
Python 3.4.3 (default, Jul 28 2015, 18:20:59) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import site
>>> site.getsitepackages()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'getsitepackages'
>>> 

harap pertimbangkan untuk memperbarui site.py untuk memberikan site.getsitepackages()

Tekan masalah ini dengan #555, yang dapat menyebabkan perilaku berbeda di lingkungan virtual jika Anda menjalankan dengan -Werror karena peringatan penghentian. Karena tox bergantung pada paket ini untuk bekerja secara internal, jangan melihat banyak cara untuk mengatasinya.

+1 sad_panda dan banyak air mata

+1 ini menggigit saya hari ini, kode berfungsi di luar virtualenv tetapi tidak di dalam.

+1 gigitan, apakah ada pembaruan? Terima kasih.

+1 masalah yang sama dengan rk (kernel jarak jauh untuk jupyter).

+1 gigitan, berfungsi di luar virtualenv tetapi tidak di dalam.

Semua, saya pikir untuk saat ini solusi terbaik mungkin adalah vendor site.py (atau bagian dari itu) dalam proyek Anda.

Sebagai solusinya: python -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" berhasil menemukan lokasi direktori paket situs Python saya

+1

+1 gigitan, apakah ada pembaruan? Terima kasih.

saya menggunakan virtualenv 15.0.1 di Ubuntu 16.04 64bit

+1 gigitan
(virtualenv 15.1.0 pada CentOS 7.5.1804)

Sejak pindah ke py3, saya berhenti menggunakan virtualenv dan saya menggunakan venv milik python sendiri. Dengan python 3.6+, venv minimalis hanya terdiri dari beberapa symlink:

$ python3.6 -m venv --without-pip grut
$ tree grut/
grut/
├── bin
│   ├── activate
│   ├── activate.csh
│   ├── activate.fish
│   ├── python -> python3.6
│   ├── python3 -> python3.6
│   └── python3.6 -> /usr/bin/python3.6
├── include
├── lib
│   └── python3.6
│       └── site-packages
├── lib64 -> lib
└── pyvenv.cfg

6 directories, 7 files

Jadi, tidak ada lagi virtualenv dan semua kebiasaannya bagi saya. HTH orang lain.

@RemiCardona Saya menggunakan venv Python 3 sebanyak yang saya bisa, tetapi sayangnya tox masih menggunakan virtualenv (bahkan ketika menguji Python 3), jadi saya terkena masalah ini setiap kali saya menggunakan tox untuk mengotomatiskan pengujian atau melakukan integrasi berkelanjutan. 😞.

Masalah ini secara otomatis ditandai sebagai basi karena tidak ada aktivitas terbaru. Ini akan ditutup jika tidak ada aktivitas lebih lanjut yang terjadi. Cukup tambahkan komentar jika Anda ingin tetap membukanya. Terima kasih atas kontribusi Anda.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat