将python包的路径添加到sys.path

时间:2014-05-27 13:46:27

标签: python

我有一个案例需要将一个python包的路径添加到sys.path(而不是它的父目录),但是通常按名称引用包。 也许这很奇怪,但让我举例说明我的需要,也许你们知道如何实现这一目标。

我在/ home / me / python这样的路径中有各种实验文件夹,模块等。 现在我不想将该文件夹添加到我的sys.pathPYTHONPATH),因为有些实验模块名称可能与某些有用的内容发生冲突。 但是,在/home/me/python内,我希望有一个像pyutils这样的文件夹。所以我想将/home/me/python/pyutils添加到PYTHONPATH,但是,能够通过名称pyutils引用包...就像我会在路径中添加/home/me/python一样

3 个答案:

答案 0 :(得分:0)

一个有用的事实是,向python路径添加内容不同于将其导入到解释器中。您可以构建模块和子模块,使名称不会发生冲突。

Look here关于如何创建模块。我阅读了这些文档,但我认为模块布局需要一些学习,这意味着创建模块,然后将它们导入脚本,看看导入是否笨拙或需要过多的资格。

分别考虑python import system。导入内容时,可以使用“导入... as”功能在导入时将其命名为不同的内容,从而防止命名冲突。

您似乎已经了解了如何使用sys.path()更改PYTHONPATH,如文档here所述。

答案 1 :(得分:0)

您有多种选择:

  • 制作新目录pyutilsdir,将pyutils放入pyutilsdir, 然后将pyutilsdir添加到PYTHONPATH。
  • 将实验代码移到/home/me/python之外并添加python 你的PYTHONPATH
  • 重命名实验模块,使其名称不与之冲突 其他模块。然后将python添加到PYTHONPATH
  • 使用githg等版本控制系统制作 根据需要可用或不可用的实验模块。

    你可以拥有一个没有实验模块的master分支, 以及包含它们的feature分支。例如,使用git,您可以在它之间切换

    这两个
    git checkout [master|feature]
    

    /home/me/python/pyutils(git repo目录)的内容会 根据签出的提交进行更改。因此,使用版本控制,您可以将实验模块保留在pyutils中,但只有在签出feature分支时才会显示它们。

答案 2 :(得分:-1)

我会回答我自己的问题,因为我在写这个问题时得到了一个想法,也许有人会需要这个。 我添加了从该文件夹到我的site-packages文件夹的链接: ln -s /home/me/python/pyutils /path/to/site-packages/pyutils

然后,由于PYTHONPATH包含/path/to/site-packages文件夹,并且我有一个pyutils文件夹,其中 init .py,我可以导入如下:

from pyutils import mymodule

/home/me/python的其余部分不在PYTHONPATH

相关问题