为什么当我将python文件移动到scipy时.在ubuntu的Stats文件夹中,它会消失



我下载了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下的目录中相同的问题。