我下载了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,它仍然消失。
总的来说,我不知道如何移动它,以便我可以从python程序中调用它,如果我已经导入了scipy.stats,scipy.stats.kde等。这就是我真正想要解决的问题。
答案 0 :(得分: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
最后两行可以放在~/.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的方式是在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
下的目录中即可。