Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正在停止生成.pyc和.pyo_Python - Fatal编程技术网

Python 正在停止生成.pyc和.pyo

Python 正在停止生成.pyc和.pyo,python,Python,我有一个包含python脚本的rpm。当rpm安装在服务器上时,它会创建.pyc和.pyo文件。是否有一个标志,我可以放在我的脚本,这将停止这些文件的生成。我无法更改安装脚本。该脚本(Python)将由用户稍后运行 我已经试过了/usr/bin/python-B,但它似乎不起作用。 我已经看到了sys.dont_write_bytecode=True,但我不确定这是否有效,因为脚本在安装期间不会运行 Python版本是2.6.6 任何帮助都将不胜感激 注: 谢谢你到目前为止的回复。这些文件似乎是

我有一个包含python脚本的rpm。当rpm安装在服务器上时,它会创建.pyc和.pyo文件。是否有一个标志,我可以放在我的脚本,这将停止这些文件的生成。我无法更改安装脚本。该脚本(Python)将由用户稍后运行

我已经试过了/usr/bin/python-B,但它似乎不起作用。 我已经看到了sys.dont_write_bytecode=True,但我不确定这是否有效,因为脚本在安装期间不会运行

Python版本是2.6.6

任何帮助都将不胜感激

注: 谢谢你到目前为止的回复。这些文件似乎是在脚本放置在服务器上的同时创建的。我假设安装程序正在这样做。.pyc和pyo文件仅用于脚本本身。 示例:
scriptname.py、scriptname.pyc、scriptname.pyo


它看起来好像是在创建rpm期间发生的。Maven会生成这些文件吗?如果是,有没有办法阻止它将它们打包到rpm中?

如果您的问题是脚本导入了其他模块,并且您在“脚本(Python)将在稍后由用户运行”时为这些其他模块(而不是脚本本身)获得了
.pyc
文件,并且您希望停止该操作,那只是:

import sys
sys.dont_write_bytecode = False
你说:

我已经看到sys.dont_write_bytecode=True,但我不确定这是否有效,因为脚本将不会在安装期间运行

那很好。如果脚本在安装时没有运行,它首先不会生成任何字节码,所以这不是问题。当用户稍后运行它时,这将使它不会生成
.pyc
文件



另一方面,如果您的问题是安装程序正在为脚本或脚本所需的所有模块预生成
.pyc
文件,那么您在脚本中所做的任何操作都无法修复该问题;您只需要删除安装程序中执行此操作的部分。

是否检查了这些
.pyc
.pyo
文件是否在安装过程中生成?如果是的话,你将不得不让安装程序给它提供一些标志,或者运行一些安装后脚本来删除它们。你不能在Python代码中放置任何东西,因为无论你在那里放置什么,都要在编译之后才能运行,这是创建
.pyc
文件的时候。@abarnert实际上,如果您将shebang行添加到主可执行文件中,shell在使用
/program
或仅使用
program
启动程序时(如果它位于
路径
中),将使用所选的解释器传递给定的命令行,使其工作(刚刚检查)。如果只将其放在导入的模块中,并且直接运行调用python解释器的主程序,则无法使用。如果脚本不需要stdin,则可以执行herdoc hack:编写一个以
#!/bin/sh
开头的shell脚本,然后
python-B您尝试过设置
pythondotwritebytecode=1
吗omewhere在您的系统配置中?