Pertanyaan Bagaimana cara membuat virtualenv dengan Python3.3 di Ubuntu?


Saya menjalankan Precise Pangolin amd64. Saya menginstal Python 3.3 dari ppa: fkrull / deadsnakes.

Sekarang saya ingin benar-benar menggunakan versi Python baru ini dalam virtualenv. Tapi Bagaimana saya bisa melakukan ini? Saya mendapatkan kesalahan berikut:

$ virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3
Running virtualenv with interpreter /usr/bin/python3.3
The --no-site-packages flag is deprecated; it is now the default behavior.
New python executable in /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3
Also creating executable in /home2/USERNAME/.virtualenvs/pywork3/bin/python
Traceback (most recent call last):
  File "/usr/local/lib/python2.7/site-packages/site.py", line 73, in <module>
    __boot()
  File "/usr/local/lib/python2.7/site-packages/site.py", line 2, in __boot
    import sys, imp, os, os.path   
ImportError: No module named 'imp'
ERROR: The executable /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3 is not functioning
ERROR: It thinks sys.prefix is '/home2/USERNAME/.virtualenvs' (should be '/home2/USERNAME/.virtualenvs/pywork3')
ERROR: virtualenv is not compatible with this system or executable

Jika sebaliknya, saya secara eksplisit menggunakan python3.3 untuk memanggil virtualenv, saya mendapatkan kesalahan ini:

$ python3.3 /usr/bin/virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3
Traceback (most recent call last):
  File "/usr/bin/virtualenv", line 2, in <module>
    import virtualenv
ImportError: No module named 'virtualenv'

Aku terjebak. Bantuan apa pun sangat dihargai!

EDIT: Mengikuti saran oleh @thefourtheye, saya membersihkan lokal saya site-packages direktori (hanya menghapus secara efektif site.py). Sekarang saya sudah selangkah lebih maju, tapi virtualenv mengeluh tentang yang hilang easy_install:

 Error [Errno 2] No such file or directory:   
'/home2/USERNAME/.virtualenvs/pywork3/bin/easy_install' while executing command    
/home2/USERNAME/.virt...rk3/bin/easy_install /usr/share/python-virtualenv/pip-1.1.tar.gz

Saya sudah menginstal paket python3-setuptools, yang menginstal versi py3 easy_install.

EDIT2:

Inilah output verbose, tanpa secara eksplisit lewat --distribute dan --no-site-packages, karena kedua switch ini adalah perilaku default saya virtualenv:

$ virtualenv --verbose -p /usr/bin/python3.3 ~/.virtualenvs/pywork3
Running virtualenv with interpreter /usr/bin/python3.3
Creating /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3
Symlinking Python bootstrap modules
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/config-3.3m
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/lib-dynload
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/os.py
  Ignoring built-in bootstrap module: posix
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/posixpath.py
  Cannot import bootstrap module: nt
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/ntpath.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/genericpath.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/fnmatch.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/locale.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/encodings
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/codecs.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/stat.py
  Cannot import bootstrap module: UserDict
  Cannot import bootstrap module: copy_reg
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/types.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/re.py
  Cannot import bootstrap module: sre
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/sre_parse.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/sre_constants.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/sre_compile.py
  Ignoring built-in bootstrap module: zlib
  Cannot import bootstrap module: _abcoll
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/warnings.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/linecache.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/abc.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/io.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/_weakrefset.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/copyreg.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/tempfile.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/random.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/__future__.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/collections
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/keyword.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/tarfile.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/shutil.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/struct.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/copy.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/base64.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/bisect.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/_dummy_thread.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/hashlib.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/heapq.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/hmac.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/reprlib.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/rlcompleter.py
  Symlinking /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/weakref.py
Creating /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/site-packages
Writing /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/site.py
Writing /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/orig-prefix.txt
Writing /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/no-global-site-packages.txt
Creating parent directories for /home2/USERNAME/.virtualenvs/pywork3/include
Symlinking /home2/USERNAME/.virtualenvs/pywork3/include/python3.3m
Creating /home2/USERNAME/.virtualenvs/pywork3/bin
New python executable in /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3
Changed mode of /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3 to 0o755
Also creating executable in /home2/USERNAME/.virtualenvs/pywork3/bin/python
Changed mode of /home2/USERNAME/.virtualenvs/pywork3/bin/python to 0o755
Testing executable with /home2/USERNAME/.virtualenvs/pywork3/bin/python3.3 -c "
import sys
prefix = sys.prefix
if sys.version_info[0] == 3:
    prefix = prefix.encode('utf8')
if hasattr(sys.stdout, 'detach'):
    sys.stdout = sys.stdout.detach()
elif hasattr(sys.stdout, 'buffer'):
    sys.stdout = sys.stdout.buffer
sys.stdout.write(prefix)
"
Got sys.prefix result: '/home2/USERNAME/.virtualenvs/pywork3'
Creating /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/distutils
Writing /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/distutils/__init__.py
Writing /home2/USERNAME/.virtualenvs/pywork3/lib/python3.3/distutils/distutils.cfg
Using existing distribute egg: /usr/share/python-virtualenv/distribute-0.6.24.tar.gz
Installing distribute..............................................................................................................................................................................................................................................................................................................................................................................................................done.
Installing existing pip-1.1.tar.gz distribution: /usr/share/python-virtualenv/pip-1.1.tar.gz
Installing pip...
  Error [Errno 2] No such file or directory: '/home2/USERNAME/.virtualenvs/pywork3/bin/easy_install' while executing command /home2/USERNAME/.virt...rk3/bin/easy_install /usr/share/python-virtualenv/pip-1.1.tar.gz
...Installing pip...done.
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 2283, in <module>
    main()
  File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 938, in main
    never_download=options.never_download)
  File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 1054, in create_environment
    install_pip(py_executable, search_dirs=search_dirs, never_download=never_download)
  File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 643, in install_pip
    filter_stdout=_filter_setup)
  File "/usr/lib/python2.7/dist-packages/virtualenv.py", line 976, in call_subprocess
    cwd=cwd, env=env)
  File "/usr/lib/python3.3/subprocess.py", line 818, in __init__
    restore_signals, start_new_session)
  File "/usr/lib/python3.3/subprocess.py", line 1416, in _execute_child
    raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: '/home2/USERNAME/.virtualenvs/pywork3/bin/easy_install'

46
2018-04-10 16:37


asal


Hanya demi kejelasan, bisakah Anda mencoba perintah ini (tidak termasuk distribute): virtualenv --no-site-packages -p /usr/bin/python3.3 ~/.virtualenvs/pywork3? - don.joey
Saya mencoba dengan --setuptools juga, dan hasilnya persis sama (termasuk pemasangan distribusi). - andreas-h
Di 14.04 semuanya bekerja tanpa rasa sakit. - Antti Haapala


Jawaban:


  1. Ambil cadangan paket situs.

    cp -r /usr/local/lib/python2.7/site-packages/ /tmp/site-packages

  2. Memotong direktori itu

    rm -rf /usr/local/lib/python2.7/site-packages/

  3. Sekarang coba yang sama

    virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3

  4. Untuk menginstal tanpa pip

    virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3 --no-pip

EDIT: Sepertinya versi virtualenv (1.7.1.2) dan python3.3 tidak kompatibel. Jadi, silakan coba ini

  1. Uninstall python-virtualenv menggunakan sudo apt-get remove python-virtualenv

  2. wget http://peak.telecommunity.com/dist/ez_setup.py; sudo python ez_setup.py Ini akan menginstal easy_install terbaru.

  3. sudo easy_install pip

  4. sudo pip install virtualenv

  5. virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3


25
2018-04-11 08:23



menarik, sekarang saya sudah selangkah lebih maju, tetapi masih belum sampai ke sana. Lihat pertanyaan saya yang diperbarui - andreas-h
Saya akan melalui kode virtualenv. Akan sangat membantu, jika Anda bisa menjalankan perintah yang sama dengan peningkatan verbositas dan menunjukkan kepada kita output yang lengkap. virtualenv --no-site-packages --distribute -p /usr/bin/python3.3 ~/.virtualenvs/pywork3 --verbose - thefourtheye
mendapatkannya, lihat pertanyaan saya yang diperbarui. - andreas-h
Telah menganalisa lebih dari dua jam. Sepertinya distribusi tidak menginstal skrip easy_install di direktori bin. Kita bisa menginstalnya secara manual nanti. Jadi hanya untuk menginstal virtualenv, coba instal tanpa pip, karena saya telah memperbarui jawabannya - thefourtheye
Alih-alih menginstal virtualenv secara manual, saya hanya mengunduh paket .dev untuk Ubuntu Raring dari packages.ubuntu.com/raring/all/python-virtualenv/download dan menginstalnya via dpkg -i. Tampaknya bekerja sekarang. Terima kasih banyak! - andreas-h


Python 3.3 memiliki built-in venv.

http://docs.python.org/3/library/venv.html#module-venv

Cukup jalankan

pyvenv-3.3 /path/to/environment

Dan kemudian mengaktifkannya

source /path/to/environment/bin/activate

Versi virtualenv built-in ini jauh lebih fleksibel daripada yang mungkin Anda gunakan sebelumnya. Misalnya, Anda dapat memperpanjang EnvBuilder untuk melakukan apa pun yang Anda inginkan. Anda dapat menyalin contoh penerapan EnvBuilder dari tautan di bawah dan bermain-main dengannya: http://docs.python.org/3/library/venv.html#an-example-of-extending-envbuilder

Skrip di atas kemungkinan melakukan sebagian besar dari apa yang kita harapkan untuk keluar dari virtualenv. Jadi, jika Anda hanya perlu virtualenv dengan easy_install dan pip, Anda harusnya baik-baik saja.

Lihat @MarkOfSineHasil edit di bawah ini untuk klarifikasi tentang cara menjalankannya jika Anda masih bingung.


Untuk menambah hal di atas, dan sesuai dokumen:
Misalnya, setelah mengeksekusi: pyvenv-3.3 /path/to/my_project/venv
Anda bisa berlari distribute_setup.py, yang tampaknya melakukan berbagai hal, tetapi pada dasarnya Anda berakhir dengan easy_install di dalam kamu ./my_project/venv/bin direktori.
Ini kemudian dapat digunakan untuk menginstal pip dan sejenisnya.

Itu tidak mengatakan di mana Anda harus mendapatkan distribute_setup.py dari, jadi saya mengunduh dari:

http://python-distribute.org/distribute_setup.py

dan menggunakan lingkungan yang diaktifkan:

cd /path/to/my_project
source venv/bin/activate

berlari:

python distribute_setup.py

dan

easy_install pip

Yang kemudian menyelesaikan pengaturan lingkungan virtual lebih segaris dengan virtualenv pada python 2.x


58
2017-10-05 04:11



nice one - saya tidak menyadari ini ... - andreas-h
sebenarnya, ini tampaknya bukan virtualenv "nyata". Tidak ada pip atau easy_install yang tersedia setelah mengaktifkannya. - andreas-h
@ andreas-h Anda perlu menginstalnya sendiri. Itu tidak membuatnya tidak "nyata". - Chris
@ andreas-h Juga, ini dirancang agar Anda dapat membuat skrip untuk menambahkan apa pun yang Anda inginkan sendiri .. lihat docs.python.org/3/library/… - Chris
Ketika terminal Anda terus berteriak tentang perizinan yang salah saat memasang pip, periksa apakah Anda menggunakan biner easy_install yang benar. Anda dapat memilih biner di virtualenv secara eksplisit oleh ./venv/bin/easy_install pip. - OrangeTux


Lebih mudah daripada tampaknya:

virtualenv -p /usr/bin/python3 yourenv
source yourenv/bin/activate
pip install package-name

benar-benar berfungsi :)


48
2017-11-29 16:07



Itu seharusnya jawaban yang benar - micgeronimo
Yeah! Itu sangat mudah! Terima kasih sobat. @Cem Yildiz - Fahad Ahammed


Anda melakukan ini terlalu rumit. Jika itu termasuk dalam python3, buat saja dengan:

python3 -m venv

Anda bahkan dapat membuat alias jika Anda mau

alias virtualenv3='python3 -m venv'

Bergantung pada mesin, Anda mungkin perlu menentukan penerjemah:

alias virtualenv3='python3 -m venv -p python3'

8
2017-07-29 10:40



Paket python3-venv juga diperlukan, setidaknya pada Ubuntu 14.04. - gioele
Bagi saya (juga pada 14.04), paket itu dipanggil python3.4-venv. - tobek


Langkah-langkah yang berhasil untuk saya: Pada MAC OSX 10.9.5

  1. Unduh dan pasang Python-3.4.3 secara manual.

    P3PATH=/Users/$USER/Python3
    mkdir -p $P3PATH
    cd $P3PATH
    tar -zxvf Python-3.4.3.tgz
    ./configure --prefix=$P3PATH/Python-3.4.3
    make; make install
    
  2. Buat virtualenv.

    $P3PATH/Python-3.4.3/bin/pyvenv py3env
    source py3env/bin/activate
    

catatan:
virtualenv -p <path to python3> py3env tidak bekerja:

Error due to zlib

2
2018-05-18 13:09



Ini juga berfungsi dengan baik pada Debian 7 (mengi). Hanya P3PATH lainnya - rubo77
Untuk distro yang berbasis debian di dalam wadah pengguna, pastikan untuk menginstal libssl-dev dan zlib1g-dev sehingga python dikompilasi dengan _ssl.so zlib.so - Nehal J Wani


On Ubuntu 14.04 

sudo apt-get install python3-pip

sudo pip install virtualenv

virtualenv-3.4 --no-site-packages venv

1
2017-11-05 15:03