字节编译后是否删除python源文件?

字节编译后是否删除python源文件?,python,bytecode,Python,Bytecode,字节编译后是否可以删除python源文件(*.py)?我知道这不能提供安全性,而且.pyc/o文件可以很容易地进行反向工程;我只想在一个版本中发布更少的文件 # Clean the python cache find ./mypythonstuffs -type f -name "*.py[co]" -delete find ./mypythonstuffs -type d -name "__pycache__" -delete # Remove test directories find .

字节编译后是否可以删除python源文件(*.py)?我知道这不能提供安全性,而且.pyc/o文件可以很容易地进行反向工程;我只想在一个版本中发布更少的文件

# Clean the python cache
find ./mypythonstuffs -type f -name "*.py[co]" -delete
find ./mypythonstuffs -type d -name "__pycache__" -delete

# Remove test directories
find ./mypythonstuffs -name "test" -type d -exec rm -r "{}" \;

# Byte-compile, ignoring .git subdirectories
python3 -O -m compileall -f -x r'[/\\][.]git' ./mypythonstuffs

# Remove now-unnecessary??? python source files
find ./mypythonstuffs -type f -name "*.py" -delete

是的,您可以将应用程序作为
.pyc
文件交付

但是如果你只是想减少文件数量,你可以交付
.py
文件而不是
.pyc
文件,对吗?

请不要这样做


首先,python字节码是一个未记录的实现细节。无法保证将字节码分发给其他人会真正起作用

其次,它使调试变得困难。你知道追踪如何显示源代码行吗?这是从原始源文件中获取的。即使你根本不关心自由和开放源码软件,你也应该关心从用户那里得到有用的错误报告


第三,实在没有必要。如果希望分发更少的文件,只需分发python源文件即可。字节码是一个实现细节。您不应该首先签入或分发它。

您可以这样做,但为什么不直接使用
.gitignore
?似乎需要做很多工作来避免在您的发行版中遗漏一些非常容易的内容。我只希望pycache目录,而不是实际的源文件成为发行版的一部分。您的问题也是,“我可以在我的发行版中这样做吗?”是的,非常简单。是不是“我仍然能够启动我的程序,让人们毫无问题地运行它?”我个人无法回答这个问题,因为没有代码示例,你的问题也不是这样说的。你可能会遇到不同的python Subversion无法运行代码的问题。查找文档字符串等的Python代码扫描器可能无法工作,这可能会让用户的IDE感到恼火,并且可能会影响测试和分析软件。但这是合法的。另一种解决方案是构建一个官方的python可分发文件,比如一个与pip一起工作的轮子。
\uuuuPycache\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。如果我删除所有的.py文件,第一个调用的是什么?我需要保留一个顶级main吗?“不能保证将字节码分发给其他人会真正起作用”——如果使用容器,实际上是这样的。