0

我下载了 http://projects.scipy.org/scipy/attachment/ticket/846/mvncdf.py

我:sudo mv ~/Downloads/mvncdf.py /usr/lib/pyshared/python2.7/scipy/stats

它消失了

我也尝试直接保存到 /usr/lib/pyshared/python2.7/scipy/stats 并且它仍然消失。

总的来说,我不确定如何移动它,以便如果我导入了 scipy.stats、scipy.stats.kde 等,我可以从 python 程序中调用它。这就是我真正想要解决的问题。

4

1 回答 1

1

有几种方法可以在 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

最后两行可以放在~/.bashrcor中~/.bash_profile,以便每次登录时设置变量。

sys.path 一种更持久的方法是在您的本地用户“安装”程序应该去的地方找到一个目录。按照惯例,它位于site-packages您的发行版的目录之一中。如果您使用 python 2.7 版,这可能是:

$ sudo mv ~/Downloads/mvncdf.py /usr/lib/python2.7/site-packages/.

您可以sys.path从 python shell检查哪些目录在您的

>>> import sys
>>> for i in sys.path:
...     print i
...

但是,不鼓励将您自己的文件放在类似/usr/lib/python2.7/site-packages/的位置,因为它们可能会在 python 更新期间被覆盖。最合适的方式,也是最接近 FHS 的方式,是在site-packages下创建一个目录/usr/local,例如,

$ 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.

于 2013-04-18T02:33:55.427 回答