簡體   English   中英

在sudo下運行pip install是否可以接受並且安全?

[英]Is it acceptable and safe to run pip install under sudo?

我已經開始使用Mac來安裝Python軟件包,就像在工作Windows PC時一樣。 但是在Mac上,我在寫入日志文件或站點程序包時經常遇到權限被拒絕的錯誤。

因此,我考慮過在sudo下運行pip install <package> ,但是考慮到我只是想將其安裝在當前用戶帳戶下,這是sudo的安全/可接受的使用嗎?

日志文件I / O錯誤的示例回溯:

Command /usr/bin/python -c "import setuptools;__file__='/Users/markwalker/build/pycrypto/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --single-version-externally-managed --record /var/folders/tq/hy1fz_4j27v6rstzzw4vymnr0000gp/T/pip-k6f2FU-record/install-record.txt failed with error code 1 in /Users/markwalker/build/pycrypto
Storing complete log in /Users/markwalker/Library/Logs/pip.log
Traceback (most recent call last):
  File "/usr/local/bin/pip", line 8, in <module>
    load_entry_point('pip==1.1', 'console_scripts', 'pip')()
  File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg/pip/__init__.py", line 116, in main
    return command.main(args[1:], options)
  File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg/pip/basecommand.py", line 141, in main
    log_fp = open_logfile(log_fn, 'w')
  File "/Library/Python/2.7/site-packages/pip-1.1-py2.7.egg/pip/basecommand.py", line 168, in open_logfile
    log_fp = open(filename, mode)
IOError: [Errno 13] Permission denied: '/Users/markwalker/Library/Logs/pip.log'

更新這可能取決於權限,但是最好的方法是為您的python項目使用虛擬環境。 除非絕對必要,否則應避免運行sudo pip

使用虛擬環境

$ virtualenv myenv
.. some output ..
$ source myenv/bin/activate
(myenv) $ pip install what-i-want

當您要為全局,系統范圍的Python安裝安裝內容時,僅使用sudo或提升的權限。

最好使用虛擬環境為您隔離軟件包。 這樣一來,您就可以在不影響全局python安裝的情況下進行游戲。

另外,virtualenv不需要提升的權限。

sudo下運行pip install是否可以接受並且安全?

它不安全並且被皺着眉頭–請參閱運行“ sudo pip”有什么風險? 要在主目錄中安裝Python軟件包,您不需要root特權。 請參閱--user選項的說明

您最初的問題是pip無法將日志寫入文件夾。

IOError: [Errno 13] Permission denied: '/Users/markwalker/Library/Logs/pip.log'

您需要將cd放入一個文件夾,在該文件夾中,被調用的進程可以像/tmp一樣編寫,因此cd /tmp並重新調用該命令可能會起作用,但這不是您想要的。

實際上對於這種特定情況(您不想使用sudo安裝python軟件包)並且不需要全局軟件包安裝,可以使用--user標志,如下所示:

pip install --user <packagename>

它會很好地工作。

我假設您具有一個用戶python python安裝,並且不想打擾有關virtualenv (不是很用戶友好)或pipenv的閱讀

正如評論部分中的一些人指出的那樣,除非您不知道該怎么辦並陷入困境,否則下一個方法不是一個好主意:

對於全局包的另一種方法例如您要執行的操作:

chown -R $USER /Library/Python/2.7/site-packages/

或更一般地

chown -R $USER <path to your global pip packages>

因為我有同樣的問題,所以我想強調一下, 布萊恩·凱恩的第一條評論實際上是“ IOError:[Errno 13]”問題的解決方案:

如果在temp目錄( cd /tmp )中執行,那么如果我運行sudo pip install foo ,就不會再發生IOError。

我有安裝問題virtualenvwrapper在成功安裝virtualenv

執行此操作后,我的終端抱怨:

pip install virtualenvwrapper

因此,我嘗試失敗 (不推薦)

sudo pip install virtualenvwrapper

然后,我成功安裝了它:

pip install --user virtualenvwrapper

您的權限似乎混亂了。 在終端中輸入chown -R markwalker ~並再次嘗試pip 讓我知道您是否已排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM