繁体   English   中英

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

[英]Add path to python package to sys.path

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

我在/ home / me / python之类的路径中拥有各种实验性文件夹,模块等。 现在,我不想将该文件夹添加到我的sys.pathPYTHONPATH )中,因为有一些实验性模块,其名称可能与有用的名称冲突。 但是,在/home/me/python我想要一个类似pyutils的文件夹。 所以我想将/home/me/python/pyutilsPYTHONPATH ,但是,能够通过其名称pyutils来引用该包...就像我将/home/me/python到路径中一样。

一个有用的事实是,向python路径添加内容不同于将其导入到解释器中。 您可以对模块和子模块进行结构化,以免名称冲突。

在这里查看有关如何创建模块的信息。 我阅读了文档,但我认为模块布局需要边做边学,这意味着创建模块,然后将其导入脚本,并查看导入是否笨拙或需要太多资格。

单独考虑python导入系统 导入某些内容时,可以使用“导入...为”功能在导入时为其命名不同的名称,从而防止命名冲突。

您似乎已经了解了如何使用sys.path()更改PYTHONPATH,如此处所述

您有多种选择:

  • 创建一个新目录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分支时才使它们存在。

我会回答我自己的问题,因为我在写问题时有个主意,也许有人会需要。 我从该文件夹向我的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM