2011-05-06 95 views
6

我想在Ubuntu 10.04上用Python 2.6.5設置virtualenv,但有一些問題。問題設置Virtualenv

無需安裝的virtualenv和virtualenv中包裝與PIP後,我運行命令:virtualenv中的mysite-ENV --verbose

我得到以下錯誤:

Creating mysite-env/lib/python2.6 
Symlinking Python bootstrap modules 
    Symlinking mysite-env/lib/python2.6/lib-dynload 
    Symlinking mysite-env/lib/python2.6/config 
    Symlinking mysite-env/lib/python2.6/os.py 
    Ignoring built-in bootstrap module: posix 
    Symlinking mysite-env/lib/python2.6/posixpath.py 
    Cannot import bootstrap module: nt 
    Symlinking mysite-env/lib/python2.6/ntpath.py 
    Symlinking mysite-env/lib/python2.6/genericpath.py 
    Symlinking mysite-env/lib/python2.6/fnmatch.py 
    Symlinking mysite-env/lib/python2.6/locale.py 
    Symlinking mysite-env/lib/python2.6/encodings 
    Symlinking mysite-env/lib/python2.6/codecs.py 
    Symlinking mysite-env/lib/python2.6/stat.py 
    Symlinking mysite-env/lib/python2.6/UserDict.py 
    Symlinking mysite-env/lib/python2.6/lib-dynload/readline.so 
    Symlinking failed, copying to mysite-env/lib/python2.6/lib-dynload/readline.so 
Traceback (most recent call last): 
    File "/usr/local/bin/virtualenv", line 9, in <module> 
    load_entry_point('virtualenv==1.6.1', 'console_scripts', 'virtualenv')() 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 795, in main 
    never_download=options.never_download) 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 886, in create_environment 
    site_packages=site_packages, clear=clear)) 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 1020, in install_python 
    copy_required_modules(home_dir) 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 974, in copy_required_modules 
    copyfile(filename, dst_filename) 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 414, in copyfile 
    copyfileordir(src, dest) 
    File "/usr/local/lib/python2.6/dist-packages/virtualenv.py", line 391, in copyfileordir 
    shutil.copy2(src, dest) 
    File "/usr/lib/python2.6/shutil.py", line 99, in copy2 
    copyfile(src, dst) 
    File "/usr/lib/python2.6/shutil.py", line 53, in copyfile 
    fdst = open(dst, 'wb') 
IOError: [Errno 20] Not a directory: 'mysite-env/lib/python2.6/lib-dynload/readline.so' 

如果我再次運行,我得到以下內容:

Directory mysite-env/lib/python2.6 already exists 
    Symlinking Python bootstrap modules 
     Ignoring built-in bootstrap module: posix 
     Cannot import bootstrap module: nt 
     Symlinking mysite-env/lib/python2.6/lib-dynload/readline.so 
     Symlinking mysite-env/lib/python2.6/copy_reg.py 
     Symlinking mysite-env/lib/python2.6/types.py 
     Symlinking mysite-env/lib/python2.6/re.py 
     Symlinking mysite-env/lib/python2.6/sre.py 
     Symlinking mysite-env/lib/python2.6/sre_parse.py 
     Symlinking mysite-env/lib/python2.6/sre_constants.py 
     Symlinking mysite-env/lib/python2.6/sre_compile.py 
     Ignoring built-in bootstrap module: zlib 
     Symlinking mysite-env/lib/python2.6/warnings.py 
     Symlinking mysite-env/lib/python2.6/linecache.py 
     Symlinking mysite-env/lib/python2.6/_abcoll.py 
     Symlinking mysite-env/lib/python2.6/abc.py 
    Creating mysite-env/lib/python2.6/site-packages 
    Writing mysite-env/lib/python2.6/site.py 
    Writing mysite-env/lib/python2.6/orig-prefix.txt 
    Creating parent directories for mysite-env/include 
    Symlinking mysite-env/include/python2.6 
    Creating mysite-env/bin 
    New python executable in mysite-env/bin/python 
    Changed mode of mysite-env/bin/python to 0755 
    Testing executable with mysite-env/bin/python -c "import sys; print(sys.prefix)" 
    ERROR: The executable mysite-env/bin/python is not functioning 
    ERROR: It thinks sys.prefix is u'/usr' (should be '/vagrant/mysite-env') 
    ERROR: virtualenv is not compatible with this system or executable 

任何想法如何解決這個問題?謝謝!

+0

感謝您發佈此信息。它完全咬我的屁股試圖設置流浪漢審查。現在我已將/ var/www作爲目錄,它工作正常! – 2014-08-29 18:53:33

回答

0

我還沒有遇到這個問題,但我已經親自從使用virtualenv切換到pythonbrew。對同一個問題,pythonbrew是一個不同的解決方案;它在Ruby社區中更像rvm:它從零開始構建了完全自包含的Python版本,在$HOME/.pythonbrew下;然後,它提供了shell功能,允許您輕鬆地從一個切換到另一個(爲您編輯路徑等)。它不像virtualenv那樣輕便,但它也不會搭載在系統Python上,因此整個符號鏈接問題就會消失。您也可以安裝多個Python版本,即使它們未安裝在基本系統中。

當然,您的里程可能會有所不同,但pythonbrew對我來說一直很好。

+1

請注意,您可以將virtualenv用於安裝在系統上的任何Python版本,並且可以使用--not-site-packages忽略系統範圍的網站軟件包。加上virtualenvwrapper,它變得非常乾淨整潔。布賴恩是正確的,pythonbrew可以讓你安裝一個不在那裏開始的python版本。 – Henry 2011-05-06 14:38:57

+0

同意。我並不是故意暗示virtualenv無法爲多個版本的Python創建環境;我一直這麼做。但它與系統中已有的東西有着根本的聯繫,而pythonbrew則不是。每種方法都有其優點和缺點。這些天,我碰巧喜歡pythonbrew。因人而異。 – 2011-05-06 14:42:03

2

發生此錯誤是因爲您使用的virtualenv.py文件與您正在使用的python版本不兼容。 對於python2.7,您需要從virtualenv.org網站中下載二進制文件,然後編譯它們使用

python setup.py install 

安裝後使用已安裝的二進制文件(不是virtualenv.py文件)由

virtualenv --no-site-packages <path to virtual env directory>/env/ 
5

創建虛擬環境看起來似乎已經有點既然你問這個。/vagrant目錄的Virtualbox文件驅動程序無法識別virtualenv使用很多的符號鏈接。

這可以用一個簡單的

mybox:/vagrant$ ln -s ~/.bashrc 
ln: failed to create symbolic link ./.bashrc': Protocol error` 

更新來最好的證明:

因爲流浪漢的符號鏈接不兼容&的virtualenv,我流浪漢盒/實例是任務/項目特定的(僅1的virtualenv) 。因此,在顛沛流離的主機端/實例文件夾我會保持一個簡短的腳本安裝Python &的virtualenv,然後做

pip install -r /vagrant/requirement 

更多文檔可以在這裏找到。 https://docs.vagrantup.com/v2/provisioning/basic_usage.html

與適當的bash if覈對(蟒蛇存在,並/家庭/流浪者/ env的存在),你可以提供你的盒子一次,然後附加一個電話來激活您的〜/ env的安裝,這樣,當你登錄,你已經安裝好了,準備好了。

+0

這是什麼解決方案? – stephenmurdoch 2014-09-16 16:18:22

+0

我在手機上如此簡潔。對於流浪漢系統,最好是吉普pip需求文件並將虛擬env放在主目錄下。你可以使用點緩存標誌存儲在你的vagrant共享目錄中,而不是venv本身 – David 2014-09-17 03:41:43

+0

拼寫錯誤 - 不要吉普車,本地緩存可以保存到'/ vagrant/py_fast'或更好的共享目錄http:// pip。 readthedocs.org/en/latest/user_guide.html#fast-local-installs,這樣如果你需要銷燬/重建,你可以刪除pypi除了更新以外的任何東西(現實是你不會經常更新,如果你有一個需求文件)。 – David 2014-09-20 06:34:38

1

這個問題已經有幾個答案,但我想分享我的解決方案,以防萬一它有助於下一個人。

我在哪裏運行命令的問題。我在/ vagrant共享文件夾中運行了virtualenv env命令。那是我的錯誤。當我回到我的HOME目錄時,然後運行virtualenv env,一切正常。

+0

你如何確保位於/ vagrant的python應用程序在您的主目錄中使用虛擬env?我試圖從/ inside/vagrant目錄中運行時在/ home/vagrant/env目錄中查看tox – stephenmurdoch 2014-09-16 20:19:42

+0

我運行「source〜/ venv_name/bin/activate」 該應用程序代碼位於「/ vagrant/webapps/app_name「 我從來沒有用過tox,但是這或者我認爲你可以../../直到你在那裏? – 2014-09-16 23:20:00