问题标签 [python-import]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
63888 浏览

python - 用于相对导入的 python 打包

首先:对不起,我知道有很多关于相对进口的问题,但我只是没有找到解决方案。如果可能的话,我想使用以下目录布局:

现在我的问题是:

  • 包中的测试文件如何正确导入 myClass.py?

  • 假设您将 myClass 作为 libs/myClass 或 include/myClass 中的子模块,您将如何从外部导入包?

到目前为止,我找不到一个优雅的解决方案。根据我对Guido 的决定的理解,应该可以这样做from ..src import myClass,但这会出错:

ValueError: Attempted relative import in non-package

看起来它没有将 myClass 视为包。阅读文档

需要 __init__.py 文件才能使 Python 将目录视为包含包;

似乎我遗漏了一些指定包脚本在哪里的东西,我应该使用 .pth 吗?

0 投票
33 回答
2427329 浏览

python - 从不同文件夹导入文件

我有以下文件夹结构。

我想从file.pyin导入一些函数some_file.py

我试过了

以及其他一些尝试,但到目前为止我无法正确导入。我怎样才能做到这一点?

0 投票
2 回答
650 浏览

python - python中的导入错误

在 file1.py 中:

在文件 2.py 中:

输出:

现在在文件 1 中,如果我包含 test2,我会收到以下错误:

有人可以解释为什么以及如何使其工作吗?

0 投票
2 回答
2860 浏览

python - 确认 import * 和 from xxx import * 之间的区别

我很惊讶地发现

对全球成员产生了不同的影响。我想确认我的实验是正确的行为。

在第一个示例中,更改模块 foo 中的成员将反映在所有导入 foo 的代码中。但是,在后一种情况下更改该成员似乎只会影响导入它的文件。换句话说,使用后一种方法将为每个导入文件提供其自己的 foo 成员副本。

我想要的行为是从所有文件中访问 foo.x,能够从所有文件中更改它,并将该更改反映在所有文件中(如果你愿意,这是一个真正的全局)。

0 投票
1 回答
834 浏览

django - 奇怪的 django 管理错误

我刚刚在新机器上清理了我的项目,进入管理员时出现以下错误,这表明 forms.py 中存在一些语法错误(我相信管理员的表单)。以前有人见过这样的事情吗?:


如果 traceback 中提到的 forms.py 文件是我认为的那个,那么这就是导致问题的行:

python 2.4有什么问题吗?

0 投票
1 回答
1042 浏览

python - Python/Django 正在导入错误的模块(当它应该是绝对的时候是相对的)

我正在使用 Django 1.2 pre-alpha 和 Python 2.4。是的,我知道,但我坚持下去。我们目前无法升级,无论如何我怀疑这就是答案。

我有两个模板标签库,foobar. 但是,foo也是顶级包的名称,它恰好是以下包bar

标签库bar.py包含这样的一行:

...你会期望它加载foo-1.2.3/foo/conf/settings.py.

但不是:

TemplateSyntaxError:“bar”不是有效的标签库:无法从 django.templatetags.bar 加载模板库,没有名为 conf 的模块

不幸的是,Django 执行了一个小魔术并将所有模板标签库绑定到django.templatetags.*. 因此,bar被导入为django.templatetags.bar,当它调用它时,from foo.conf import settings它最终导入bar-4.5/somepackage/templatetags/foo.py. 啊!

你有任何想法如何解决这个问题吗?

我在导入之前设置了一个断点,并且我已经确认foo-1.2.3是在开头sys.path,但是import关键字仍然找到了错误的foo

如果有帮助,请注意我可以修改foo-1.2.3包(因为它已在本地签入并且正在逐步淘汰),但我拒绝修改bar-4.5包(因为它是开源包并且已在系统范围内安装)。

0 投票
5 回答
56068 浏览

python - 何时使用 os.name、sys.platform 或 platform.system?

据我所知,Python 有 3 种方法可以找出正在运行的操作系统:

  1. os.name
  2. sys.platform
  3. platform.system()

了解这些信息在条件导入或使用不同平台的功能(例如time.clock()在 Windows 上与time.time()在 UNIX 上)时通常很有用。

我的问题是,为什么有 3 种不同的方式来做到这一点?什么时候应该使用一种方式而不是另一种方式?哪种方式是“最好的”(最面向未来或最不可能意外排除您的程序实际可以运行的特定系统)?

它似乎sys.platform比 更具体os.name,允许您区分(与 just 相对)和win32from (与 just 相对)。但如果是这样,那和之间的区别又如何呢?cygwinntlinux2darwinposixsys.platformplatform.system()

例如,哪个更好,这个:

或这个?:

现在我会坚持sys.platform,所以这个问题并不是特别紧急,但我会非常感谢对此的一些澄清。

0 投票
7 回答
218580 浏览

python - 在 python 中安装 lxml 模块

在运行 python 脚本时,我收到了这个错误

现在我尝试安装 lxml

但它给了我以下错误

使用 libxslt 的构建配置

0 投票
11 回答
193759 浏览

python - PyDev 和 Eclipse 未解决的导入问题

我对 PyDev 和 Python 非常陌生,尽管我已经大量使用 Eclipse for Java。我正在尝试解决一些 Dive Into Python 示例,这感觉就像一个非常琐碎的问题,只是变得非常烦人。我正在使用 Ubuntu Linux 10.04。

我希望能够使用位于目录中的文件 odbchelper.py/Desktop/Python_Tutorials/diveintopython/py

这是我在 PyDev/Eclipse 项目中处理的 example.py 文件:

这很好用,但是我希望我的代码的下一行是:

这每次都会导致未解决的导入错误。我已将__init__.py文件添加到几乎所有可能的目录中,但没有任何帮助。我尝试将__init__.py文件一次添加到项目位置和 odbchelper.py 文件之间的各个级别的目录中,并且我还尝试将__init__.py文件同时添加到两者之间的所有目录中。两者都不起作用。

我想做的就是在其他目录的某个地方有一个项目,比如说/Desktop/MyStuff/Project,我有example.py ...然后从example.py我想导入odbchelper.py/Desktop/Python_Tutorials/diveintopython/py/

我可以找到的每个留言板响应都只是说使用该sys.path.append()功能将此目录添加到我的路径中,然后导入它......但这正是我在我的代码中所做的并且它不起作用。

我也尝试过Ctrl-1技巧来抑制错误消息,但程序仍然无法正常运行。我收到一个错误,ImportError: No module named odbchelper. 所以显然没有添加路径,或者我添加__init__.py文件的所有排列都错过了一些问题。

非常令人沮丧的是,这么简单的事情......从我机器上其他地方的某个文件中调用东西......需要这么多的努力。

0 投票
4 回答
26517 浏览

python - Setup.py:在 CentOS 上用 Python2.6 安装 lxml

我在 CentOS 5.4 上安装了 Python 2.6.6,

我想使用 lxml 模块,但从源构建失败: