Ubuntuマシンの仮想環境でPythonパッケージをpip
でデプロイしようとしましたが、許可関連の問題が発生しました。例えば:
(TestVirtualEnv)test@testServer:~$ pip install markdown2
次で終了します:
エラー: '/home/test/virtualenvs/TestVirtualEnv/lib/python3.3/site-packages/markdown2.py'を作成できませんでした:許可が拒否されました
仮想環境内ではなくグローバルにパッケージをインストールするため、Sudo
はできません。 I chown
ed site-packages
; ls
は、easy_install
、pip
、およびsetuptools
に関連するディレクトリのみを表示し、Markdownに関連するものは何も表示しません。
許可関連のエラーが発生せずにpip
を使用して仮想環境にパッケージを展開する方法
virtualenv
をvirtualenv
として作成し、Sudo
でSudo
なしで操作すると、virtualenv
許可の問題が発生する場合があります。
あなたの質問のコメントにあるように、ここでの解決策は作成virtualenv
なしでSudo
をwork(特に書きます)にできるようにすることです。 Sudo
なしで。
解決策:
Virtualenvをルートとして作成した場合は、次のコマンドを実行します。
Sudo chown -R your_username:your_username path/to/virtuaelenv/
これで問題が解決する可能性があります。
乾杯
私の場合、mkvirtualenv
を使用していましたが、python3を使用するつもりだとは言いませんでした。私はこのエラーを受け取りました:
mkvirtualenv hug
pip3 install hug -U
....
error: could not create '/usr/lib/python3.4/site-packages': Permission denied
Python3を指定した後に動作しました:
mkvirtualenv --python=/usr/bin/python3 hug
pip3 install hug -U
Sudoを使用してvirtualenvを作成しませんでした。したがって、セバスチャンの答えは私には当てはまりませんでした。私のプロジェクトはutils
と呼ばれます。 utils
ディレクトリを確認し、これを見ました:
-rw-r--r-- 1 macuser staff 983 6 Jan 15:17 README.md
drwxr-xr-x 6 root staff 204 6 Jan 14:36 utils.Egg-info
-rw-r--r-- 1 macuser staff 31 6 Jan 15:09 requirements.txt
ご覧のとおり、utils.Egg-info
はroot
ではなく、macuser
によって所有されています。そのため、permission denied
エラーが発生していました。 root
によって作成された/Users/macuser/.virtualenvs/armoury/lib/python2.7/site-packages/utils.Egg-link
も削除する必要がありました。それらを削除した後、もう一度pip install -e .
を実行しましたが、うまくいきました。
仮想環境をアクティブにしなかった pipを使用する前。
で試してください:
$(your venv path) . bin/activate
次に、メインフォルダーでpip -r requirements.txtを使用します
Sudoを使用する場合、virtualenvの作成中にディレクトリがルート権限で作成されるため、非Sudoユーザーでパッケージをインストールしようとすると、そこにインストールする権限がありません。そのため、常にSudoなしでvirtualenvを作成し、Sudoなしでインストールしてください。
グローバルpythonにインストールされているパッケージをvirtualenvにコピーすることもできます。
cp -r /lib/python/site-packages/* virtualenv/lib/python/site-packages/