我下载了http://projects.scipy.org/scipy/attachment/ticket/846/mvncdf.py
I: sudo mv ~/Downloads/mvncdf.py/usr/lib/pyshare/python2.7/scipy/stats
它消失了
我也试着直接保存到/usr/lib/pyshare/python2.7/scipy/stats,它仍然消失。
总的来说,我不确定如何移动它,以便我可以从python程序中调用它,如果我导入了scipy。统计,scipy.stats。kde等等。这是我真正想解决的问题。
有几种方法可以在python中导入外部库。最简单的方法是从与文件相同的目录启动程序或解释器,因此
$ mkdir new_program
$ mv ~/Downloads/mvncdf.py new_program/.
$ cd new_program
$ python
>>> import mvncdf
或者,正如@tcaswell所建议的,您可以为PYTHONPATH
环境变量添加一个本地路径,
$ mkdir ~/python_scripts
$ mv ~/Downloads/mvncdf.py python_scripts/.
$ PYTHONPATH=$PYTHONPATH:$HOME/python_scripts
$ export PYTHONPATH
最后两行可以放在~/.bashrc
或~/.bash_profile
中,以便每次登录时设置该变量。
更永久的方法是在sys.path
中找到一个目录,这些本地用户"安装"的程序应该放在那里。按照惯例,它位于您的发行版的site-packages
目录之一中。如果您使用的是python版本2.7,则可能是:
$ sudo mv ~/Downloads/mvncdf.py /usr/lib/python2.7/site-packages/.
您可以从python shell
检查sys.path
中的目录。>>> import sys
>>> for i in sys.path:
... print i
...
但是,不鼓励将自己的文件放在/usr/lib/python2.7/site-packages/
之类的地方,因为它们可能在python更新期间被覆盖。最合适的方法,也是最接近FHS的方法,是在/usr/local
下创建一个site-packages
目录,例如
$ sudo mkdir -p /usr/local/lib/python2.7/site-packages
然后编辑/usr/lib64/python2.7/site.py
,找到PREFIXES
变量,并将新目录添加到列表中,例如
PREFIXES = [sys.prefix, sys.exec_prefix, '/usr/local']
Ubuntu可能已经在sys.path
中有这个目录,所以在创建和编辑site.py
之前检查一下。当然,如果您必须修改site.py
,那么在升级python时就会遇到与将文件放在/usr/lib
下的目录中相同的问题。