2014-07-15 112 views
1

我已經給了一臺筆記本電腦。所以我從我的工作電腦.virtualenvs/目錄複製到我的NAS,然後我將它複製回我的新筆記本電腦。Python,virtualenv:激活時獲取權限錯誤

我安裝了virtualenvvirtualenvwrapper但我無法讓我的虛擬環境工作。這是我第一次得到:

[email protected] ~ $ workon iwidget 
virtualenvwrapper.user_scripts could not run "/home/chris/.virtualenvs/preactivate": [Errno 13] Permission denied 
virtualenvwrapper.user_scripts could not run "/home/chris/.virtualenvs/iwidget/bin/preactivate": [Errno 13] Permission denied 

然後我做了一個chmod + x的這些文件。雖然之後我可以改變這個環境,但是沒有任何圖書館可以被看到。

我也得到這樣的:

[email protected] ~ $ ./.virtualenvs/iwidget/bin/activate 
bash: ./.virtualenvs/iwidget/bin/activate: Permission denied 

此外,下面的顯示,儘管我不能對某些ENV workon,沒有什麼可以被導入:(我沒有在chmod後+ X預活化文件)

[email protected] ~ $ workon iwidget 
(iwidget)[email protected] ~ $ python 
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import pytz 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ImportError: No module named pytz 
>>> 
(iwidget)[email protected] ~ $ ls .virtualenvs/iwidget/lib/python2.7/site-packages/py 
py4j/        pytz/ 
py4j-0.8.1-py2.7.egg-info/   pytz-2014.2-py2.7.egg-info/ 
python_dateutil-2.2-py2.7.egg-info/ 

我該如何解決這個問題?

+0

如有必要檢查所有者/組和'chown' – wim

+0

我對兩臺機器使用相同的用戶名。所有者/組在兩臺機器上都是一樣的。 – xpanta

+0

然而,「權限被拒絕」錯誤表示權限問題。 'chmod + r'有幫助嗎?這就是您需要獲取「activate」腳本以及Python讀取庫的權限。 – tripleee

回答

1

移動virtualenvs是棘手的。在新機器上從頭開始重建它們是更好的選擇。如果您使用的是需求文件,這很簡單:只需執行pip install -r requirements.txt即可。如果您沒有使用,請在pip freeze > requirements.txt的舊機器上創建它。

+0

這是我最後的手段。所以我不能把我的新機器凍結。它只能在我的舊機器上? – xpanta

+0

是的,重點是它列出了你現在安裝的東西。 –

1

由於錯誤提示,您對這些腳本沒有執行(運行)權限。我有一個類似的問題,但僅限於.virtualenvs/preactivate文件。

chmod u+x ~/.virtualenvs/*

的伎倆我,但我認爲它也是你的答案說明。它可能與從另一臺機器遷移virtualenvs有關?

你可能需要做同樣的事情〜/ .virtualenvs/iWidget的/斌/ *

使用virtualenvwrapper,你並不需要使用激活腳本文件夾本身的,但如果你想這樣做,你就必須調用這樣的命令:

. .virtualenvs/iwidget/bin/activate

注意在它前面的點?這個點實際上是一個命令,雖然很容易被忽略,並且它用於激活一個env;激活腳本不能自行運行,因爲文件的前兩行會告訴你。該命令source是該點的別名。

workon iwidget應該照顧所有的爵士樂。

至於導入問題,您可能希望在您的env中運行pip install pytz,然後嘗試導入它。要查看它是否在您的env中,請鍵入:pip freeze|grep pytz

0

從您的項目,輸入以下命令: your_project$:source env/bin/activate

這裏env是你的virtualenv目錄,這將此命令後創建:$:virtualenv env

運行第一個命令後,您將看到:(env)[email protected]:~/path_to_your_project$

完成。

+0

你可以把這些命令放在代碼塊中來清理可讀性嗎? – AndrewK