在哪里保存我的自定义脚本,以便我的python脚本可以访问默认目录中的模块?

时间:2013-12-30 16:06:53

标签: python import directory native

这将是一个多部分的问题,但最终的目标是我可以访问定制的模块/库/函数,就像我在本机python中一样。

存储非本地但pip安装的python库的位置以及如何配置我的解释器/ IDE以访问它们?

我的用户脚本全部以:

开头
#!/usr/bin/env python -*- coding: utf-8 -*- 

/usr/bin/usr/bin/env访问之间有什么区别,应该像原生python模块/包一样导入的定制模块是否有效?

我的自定义脚本应该成为包吗?如果是这样,我如何制作用户端代码,检查ImportError并在try-except中安装/设置这些软件包。

try:
  import module_x
except ImportError:
  # Install package, but how to do it within the script?
  pass

是否有存储我的自定义脚本的地方,以便它像本机库一样导入?如果是,那么在哪里?有什么后果?

1 个答案:

答案 0 :(得分:15)

嗯,你问了很多问题;我将解释主题行中的那个。

您可以将Python模块文件放在任何您想要的位置,只要它们位于您的module search path中,它们仍然可以import毫无问题。您可以在调用Python之前更改shell中的环境变量PYTHONPATH,或者通过更改代码中的sys.path变量来影响模块搜索路径。

因此,如果您安装了/home/alvas/python/lib/module_x.py/usr/local/python/lib/foo.py,则可以运行:

PYTHONPATH=/home/alvas/python/lib:/usr/local/python/lib /home/alvas/scripts/bar.py

然后是陈述

import module_x
import foo

应该只是工作。

或者你可以在你的代码中做这样的事情:

#!/usr/bin/env python
import sys
sys.path.append('/home/alvas/python/lib')
import module_x
sys.path.append('/usr/local/python/lib')
import foo

任何一种方法都可行。