Python *找不到.pyc文件

Python *找不到.pyc文件,python,Python,我正在编写一个应用程序,在Python 3.3下加载字节编译的*.pyc文件。我正在分发*.pyc文件,但没有相应的*.py文件来(尝试)保护我的源代码。(是的,如前所述,试图通过字节编译Python来阻止反编译并不是最安全的选择,但如果需要,我总是可以添加其他代码安全措施。) 但是,我发现Python在没有原始*.py文件的情况下不会加载*.py文件。(根据,*.pyc文件保存在名为\uuuu pycache\uuuu的子目录中,*.py文件所在的目录中。我使用自己的代码遵循此约定。) 在使用

我正在编写一个应用程序,在Python 3.3下加载字节编译的
*.pyc
文件。我正在分发
*.pyc
文件,但没有相应的
*.py
文件来(尝试)保护我的源代码。(是的,如前所述,试图通过字节编译Python来阻止反编译并不是最安全的选择,但如果需要,我总是可以添加其他代码安全措施。)

但是,我发现Python在没有原始
*.py
文件的情况下不会加载
*.py
文件。(根据,
*.pyc
文件保存在名为
\uuuu pycache\uuuu
的子目录中,
*.py
文件所在的目录中。我使用自己的代码遵循此约定。)


在使用Python2.7的项目的早期迭代中,我对Python源代码进行了字节编译,并将生成的
*.pyc
文件放入与
*.py
文件相同的目录中;效果很好。显然,Python如何查找
\uuuu pycache\uuu
文件夹存在问题。我做错了什么?(是的,我已经适当地设置了
sys.path
;否则,当我插入
*.py
文件作为调试措施时,它将找不到该文件。)

我将
*.pyc
文件从
\uu pycache\uuuu
目录中复制出来,并从其文件名中删除
.cpython-33
;Python随后如预期的那样找到了它。谢谢,帝斯曼

来自:

如果缺少py源文件,将忽略
\uuu pycache\uuu
中的pyc文件。这消除了意外导入过时pyc文件的问题

为了向后兼容,Python仍将支持仅pyc的发行版,但是它仅在pyc文件位于py文件所在的目录中时才会这样做,即不在
\uuuuuuPyCache\uuuu
目录中。只有在缺少py源文件时,才会导入
\uuuuu pycache\uuuu
之外的pyc文件


因此,如果您想要只制作pyc发行版,则必须将编译后的文件放在与.py文件相同的位置。根据政治公众人物的说法,
compileall
可以选择创建这个精确的布局,这样你就不必从
\uuuuupycache\uuuuuuu
中复制内容,所以请查看它。

这样生成的
.pyc
文件是否有一个额外的
.cpython-33.
插入?如果是这样,您可以简单地尝试重命名它们,使其与模块具有相同的名称。[无论如何,这对我来说很有效。]@DSM:不起作用。还是找不到模块。这方面的工作——我正在看一个
你好,世界通过导入我从
fred.cpython-33.pyc
目录中复制的
fred.pyc
文件生成的消息,该文件是在删除所有其他文件后添加到
sys.path
tmp
目录中复制的。您是否确保
\uupycache\uu
目录及其内容都具有适当的权限?