Cla*_*diu 15 python pip package
我意识到我有一个过时的numpy版本:
$ python
Python 2.7.10 (default, Oct 23 2015, 18:05:06)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.version.full_version
'1.8.0rc1'
Run Code Online (Sandbox Code Playgroud)
我试图更新它,但由于某些原因我无法安装在整台机器上:
$ sudo pip install -U numpy
Password:
Downloading/unpacking numpy from https://pypi.python.org/packages/dd/9f/cd0ec9c50e4ed8650901ad4afde164e5252b6182a9e0c7bff5f8b4441960/numpy-1.11.1.zip#md5=5caa3428b24aaa07e72c79d115140e46
Downloading numpy-1.11.1.zip (4.7MB): 4.7MB downloaded
...
Found existing installation: numpy 1.8.0rc1
Uninstalling numpy:
Cleaning up...
Exception:
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/basecommand.py", line 134, in main
status = self.run(options, args)
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/commands/install.py", line 241, in run
requirement_set.install(install_options, global_options, root=options.root_path)
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/req.py", line 1294, in install
requirement.uninstall(auto_confirm=True)
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/req.py", line 525, in uninstall
paths_to_remove.remove(auto_confirm)
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/req.py", line 1639, in remove
renames(path, new_path)
File "/Library/Python/2.7/site-packages/pip-1.4.1-py2.7.egg/pip/util.py", line 294, in renames
shutil.move(old, new)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 302, in move
copy2(src, real_dst)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 131, in copy2
copystat(src, dst)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 103, in copystat
os.chflags(dst, st.st_flags)
OSError: [Errno 1] Operation not permitted: '/tmp/pip-fajcj_-uninstall/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/numpy-1.8.0rc1-py2.7.egg-info'
Storing complete log in /Users/csaftoiu/Library/Logs/pip.log
Run Code Online (Sandbox Code Playgroud)
好的,我会安装到--user
那时:
$ pip install -U --user numpy
...
Successfully installed numpy
Run Code Online (Sandbox Code Playgroud)
但版本没有更新!
$ python
Python 2.7.10 (default, Oct 23 2015, 18:05:06)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.version.full_version
'1.8.0rc1'
Run Code Online (Sandbox Code Playgroud)
安装版本在哪里?
Cla*_*diu 17
根据Python文档,这是使用"用户方案"安装:
文件将安装到site.USER_BASE的子目录中(以下编写为userbase).
您可以看到这样的USER_BASE值:
$ python -c "import site; print(site.USER_BASE)"
/Users/csaftoiu/Library/Python/2.7
Run Code Online (Sandbox Code Playgroud)
我发现在我的机器上,这是打开的sys.path
,但是它出现在全局安装目录之后.
我把它添加到我的解决方案~/.bash_profile
:
# add user base to python path
export PYTHONPATH=$(python -c "import site, os; print(os.path.join(site.USER_BASE, 'lib', 'python', 'site-packages'))"):$PYTHONPATH
Run Code Online (Sandbox Code Playgroud)
现在确实加载了最新版本:
$ python
Python 2.7.10 (default, Oct 23 2015, 18:05:06)
[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy
>>> numpy
<module 'numpy' from '/Users/csaftoiu/Library/Python/2.7/lib/python/site-packages/numpy/__init__.pyc'>
>>> numpy.version.full_version
'1.11.1'
>>>
Run Code Online (Sandbox Code Playgroud)
@克劳迪乌的解决方案效果很好,更干净一点是:
python3 -m site --user-base
Run Code Online (Sandbox Code Playgroud)
例如像这样的东西在你的~/.profile
:
PATH="$(python3 -m site --user-base)/bin:${PATH}"
Run Code Online (Sandbox Code Playgroud)