【问题标题】:library on pythonpath not accessiblepythonpath 上的库无法访问
【发布时间】:2016-02-23 14:10:52
【问题描述】:

我在 pythonpath 上有一个库:

In [2]: import sys

In [3]: sys.path
Out[3]:                                                                                                                                                                                               
['',                                                                                                                                                                                                  
 ...                                                                                                                                                                
 '/home/cchilders/scripts/python/my_scripting_library', 
]

注册在~/.profile:

export PYTHONPATH="${PYTHONPATH}:/home/cchilders/scripts/python/my_scripting_library"

然而当我输入 python/Ipython 时,我看不到它,也看不到它。它的最高级别有 init.py。我使用 kubuntu,突然它不起作用,但我 pip install 做的任何事情。什么会导致这种情况?谢谢

【问题讨论】:

  • 文件需要调用__init__.py
  • 它是堆栈溢出所做的事情
  • 它在不同的笔记本电脑上使用相同的导出语句和相同路径中的相同文件夹
  • my_scripting_library 包目录还是它的父目录?

标签: python packages pythonpath


【解决方案1】:

PYTHONPATH 上的文件夹应该包含 python 包的文件夹,而不是包本身的路径。

在这种情况下,如果 my_scripting_library 是您的包,并且 '/home/cchilders/scripts/python/my_scripting_library' 包含 __init__.py 文件,则它将无效。

假设 my_scripting_library 是您要导入的包,请确保 __init__.py 文件位于 '/home/cchilders/scripts/python/my_scripting_library' 中,则路径上的文件夹应为:

export PYTHONPATH="${PYTHONPATH}:/home/cchilders/scripts/python"

然后您可以在 Python 中执行此操作:

>>> import my_scripting_library

【讨论】:

  • 这是为什么呢?为什么要使用父目录而不是实际目录,这对我来说似乎很荒谬
  • 当您扩展到可能需要单独路径的数百个库时,会遇到极大的问题。出于同样的原因,它允许您通过将新库放入路径上已经存在的文件夹中来快速放入它们。
  • 如果有帮助,请将路径视为寻找事物的地方。它遵循与操作系统相同的行为,但不是操作系统中的可执行文件,而是 Python 中的库。当您键入命令时,操作系统会在路径上的所有文件夹中搜索匹配的可执行文件,如果您必须单独为每个二进制文件设置路径,请考虑您的路径会变得多么混乱!
猜你喜欢
  • 2021-11-09
  • 2015-11-21
  • 2021-06-20
  • 2020-12-19
  • 1970-01-01
  • 2019-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多