首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到*.pyc文件

找不到*.pyc文件
EN

Stack Overflow用户
提问于 2013-02-11 00:15:13
回答 2查看 2.9K关注 0票数 2

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

但是,我发现在没有原始*.py文件的情况下,Python无法加载*.pyc文件。(根据PEP 3147的说法,*.pyc文件保存在*.py文件所在目录中名为__pycache__的子目录中。我正在用我自己的代码遵循这个约定。)

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-14 05:46:43

我从__pycache__目录中复制了*.pyc文件,并从其文件名中删除了.cpython-33;然后,Python如期找到了它。谢谢,DSM!

票数 2
EN

Stack Overflow用户

发布于 2013-02-14 06:16:04

来自PEP 3147

如果py源文件丢失,__pycache__中的pyc文件将被忽略。这消除了意外导入过时的pyc文件的问题。

为了向后兼容,Python将仍然支持仅支持py的发行版,但是只有当py文件位于py文件所在的目录中时,Python才会这样做,即不在__pycache__目录中。只有当py源文件丢失时,__pycache__外部的py文件才会被导入。

因此,如果您想要制作仅适用于pyc的发行版,则必须将编译后的文件放在与.py文件相同的位置。根据PEP的说法,compileall可以选择创建这种精确的布局,这样你就不需要从__pycache__中复制东西了,所以请查看它。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14799730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档