3

我正在使用 Python 3.2(用于构建和执行),这是我的问题。

我打算使用以下设置发布我的 python 应用程序:

有一个主脚本(比如说,Main.py),它使用一个编译的模块,比如说Module1.pyc)。准确地说,目录结构是:

.\Main.py
.\__pycache__\Module1.cpython-32.pyc

当我使用python解释器运行主脚本时,找不到模块并出现以下错误:

Traceback (most recent call last):
  File "Main.py", line 10, in <module>
    import Module1
ImportError: No module named Module1

请注意,我已将当前目录添加到PYTHONPATH环境变量中,并且是sys.path. 此外,还添加了内部__pycache__目录,并且在sys.path.

不知道为什么找不到 Module1。我猜,这可能是因为不同的文件名 - Module1.cpython-32.pyc?但是,这就是 Python 3.2 解释器生成它的方式。

4

2 回答 2

12

看看PEP-3147。他们描述了 python-lookup 机制是如何工作的。

在此处输入图像描述

因此,在您的具体情况下:将文件 Module1.pyc 直接放在根文件夹中。

于 2012-07-25T11:20:38.153 回答
3

如下所述,两个步骤解决了该问题: 步骤 1:将 Module.cpython-32.pyc 文件从 .__pycache__ 目录复制到 .\ 步骤 2:将文件重命名为 Module.pyc

PS:感谢 gecco 分享细节。

于 2012-07-25T11:52:20.683 回答