Python 我应该将pyc文件置于版本控制之下吗?

Python 我应该将pyc文件置于版本控制之下吗?,python,version-control,Python,Version Control,我用Python完成了一个GitHub项目。在第一次运行该项目之后,一些.pyc文件出现在其中。我应该将它们置于版本控制之下并提交到我的fork吗?这些文件是,以便Python可以更快地执行代码。因为它们是实际源代码的直接计算结果,所以签入它们没有任何好处——它们只需要在每次源代码更新时更新。而且,据我所知,不能保证不同的Python机器或版本会生成兼容的.pyc文件,这意味着分发您生成的.pyc文件可能会破坏其他人的环境 相反,您可以将.gitignore文件修复为ignore.pyc文件,并

我用Python完成了一个GitHub项目。在第一次运行该项目之后,一些.pyc文件出现在其中。我应该将它们置于版本控制之下并提交到我的fork吗?

这些文件是,以便Python可以更快地执行代码。因为它们是实际源代码的直接计算结果,所以签入它们没有任何好处——它们只需要在每次源代码更新时更新。而且,据我所知,不能保证不同的Python机器或版本会生成兼容的
.pyc
文件,这意味着分发您生成的
.pyc
文件可能会破坏其他人的环境


相反,您可以将
.gitignore
文件修复为ignore
.pyc
文件,并将其提交到fork(甚至返回到上游repo)。这样以后就不会有人注意到或需要担心这些文件了。

这个文件没有什么不好的地方,但它是无用的垃圾,它只是为了加速python应用程序的执行,并且每次进行更改时都会重建它,所以它只会随着时间的推移而增长,要修复此问题,您可能需要将
\uuuu pycache\uuuu
行添加到
.gitignore
文件中,但不应该这样做
.pyc
文件包含字节码,对于不同版本和实现的Python,字节码可能不同

只需在
.gitignore
或全局
gitignore
中添加
*.pyc
行即可

还可以查看几乎所有平台的文件。您可以在python项目中使用此选项:

# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class

# C extensions
*.so

# Distribution / packaging
.Python
env/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
*.egg-info/
.installed.cfg
*.egg

# PyInstaller
#  Usually these files are written by a python script from a template
#  before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec

# Installer logs
pip-log.txt
pip-delete-this-directory.txt

# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*,cover

# Translations
*.mo
*.pot

# Django stuff:
*.log

# Sphinx documentation
docs/_build/

# PyBuilder
target/

不可以。您不能将pyc置于版本控制之下

常见的规则是“永远不要将构建工件放入源代码管理中,因为您在源代码管理中有源代码,并且必须重复这个过程”


PYC是对应PY文件的工件

NO。。。。。。。。。。。。不,它是相同代码的“字节编译”版本。参见@skyking为什么不将
.gitignore
置于源代码管理之下?我不认为这是一个意见问题;期望用户单独定义忽略文件是不必要的工作,可能会导致错误的提交。如果您的项目生成的文件或路径不应该是repo的一部分,那么您应该签入
.gitignore
文件。如果存在需要忽略的系统特定文件,则应在中指定这些文件。对于需要所有人共享的模式,请使用
.gitignore
;对于私人模式列表,请使用
.git/info/exclude
。就我个人而言,我更喜欢根据需要忽略文件,而不是检入一堆实际上没有使用的忽略模式。