❶ Pycharm(Django)运行后报错,EOFError: marshal data too short
原因
*.pyc文件异常导致。*.pyc 文件是脚本的编译字节代码,当Python脚本运行启动时,它会动态创建,由于某种原因它不再与原始脚本匹配,所以报错。
解决方法
找到报错的__pycache__文件删除即可正常启动。通过在config.py文件中打断点,定位具体报错的mole,将对应文件中的__pycache__删除。
❷ 调用自定义模块出现MoleNotFoundError的问题
Python会在以下路径中搜索它想要寻找的模块:
1,程序所在的文件夹
2,标准库的安装路径
3,操作系统环境变量PYTHONPATH所包含的路径
产生问题的原因可能是: IDE(我使用的是Pycharm)没有将当前目录添加到工作目录中,导致了在搜索的目录中找不到要调用的模块。
解决方法1:在调用自定义模块前先将程序所在的目录添加到工作目录中
例如 这里的preprocess.py是我们自定义的模块 ,已经将其放在同一目录下
解决方法2:在Pycharm中创建NewProject,将调用程序与被调用程序放在同一个Project中。
此时Pycharm会自动生成.idea和__pycache__两个文件夹,模块的调用应该和这个有关,然后在程序中直接调用自定义的模块就可以了。
红色划线部分是调用的python解析器的位置。可能在用pycharm调用的时候这些模块都是能正常使用的。但是,为什么到了vscode这儿就出问题了呢?
首先,让我们来看看现在有哪些模块,在命令行终端输入conda list。
可以看见torch模块确实已经安装了,不过请注意后面还有个pypi。pypi是指这个模块是通过pip安装的,而不是通过conda安装。所以模块无法调用的原因就在这儿。
解决方法比较简单粗暴,在选择python解析器的时候选择conda base版本的就OK了。在这个解析器下,即使是pip安装的模块也可以照常使用。
1、因为默认的路径不在根目录了,而以 当前运行的程序文件夹为根目录
2、如果在当前文件目录底下可以找到导入的包,那么可以直接使用from … import …
3、如果在当前文件目录底下找不到导入的包,则需要向sys.path添加包的所在的绝对位置。
最后补充一下我的问题是怎么解决的:
在了解了路径原理之后,仔细核对了出问题的路径之后,发现from … import …的时候,from目录不是从根目录开始的,修改之后修复bug
❸ 如何改变__pycache__的存放路径
不要你写的代码放在桌面并且运行啊,因为你在运行python脚本的时候,python解释器会将 *.py 脚本文件进行编译,并将编译结果保存到__pycache__目录中(这个文件夹只出现在Python3.2及其后的版本中,Python2下的编译文件和源文件放同目录。)。下次再执行工程时,若解释器发现这个 *.py 脚本没有修改过,就会跳过编译这一步,直接运行以前生成的保存在 __pycache__文件夹里的 *.pyc 文件,这样工程较大时就可以大大缩短项目运行前的准备时间;如果你只需执行一个小工程,没关系 忽略这个文件夹就行。想要__pycache__文件夹不出现的话有两种方式:
1.单次不出现: 在运行脚本时添加 -B 参数,例如:python -B foo.py
2.永久不出现: 设置环境变量 PYTHONDONTWRITEBYTECODE=1
希望对你有所帮助
❹ python怎样生成可执行文件
1 安装pyinstaller
如果你的网络稳定,通常直接使用下面的命令安装即可:
pip install pyinstaller
2 开始打包
进入python需要打包的脚本所在目录,然后执行下面的命令即可:
python -F -i favicon.ico nhdz.py
3 打包结果
打包完成后,进入到当前目录下,会发现多了__pycache__、build、dist、nhdz.spec这四个文件夹或者文件,其中打包好的exe应用在dist目录下面,
到这里,exe文件就已经生算是打包完成,并且可以运行了
❺ 我将c盘pycache移到d盘,卓面图标掉失,怎样复原
从d盘应用程序文件夹中找到此应用的图标,右键点击发送到桌面即可
❻ 为什么我运行python代码后目录下不会生成pycache文件
运行的当前脚本(__main__)不会生成pycache,被import的那些moles才会
❼ python os模块在哪个文件夹
python os模块(os.py )在 LIB 文件夹
其编译模块( os.cpython-34.pyc )在 lib\_pycache_ 文件夹
❽ 怎么在代码里把.pyc文件统一存放
Python语言编程中如何编译生成PYC文件?(版本Python V 3.4.1)
(1) compile() 函数
compile() 函数有两个, 一个是内建函数,另一个是模块py_compile中的.前者生成一个Compile对象,它只能在代码中被调用(exec(comp)),不能生成pyc文件。后者必须生成pyc文
件,但不能在交互界面运行它(run 和 exec都不行)。
(2) 生成生成pyc文件
compile(file, cfile=None, dfile=None, doraise=False, optimize=-1)
例子:
compile("test.py")
compile("test.py", "test.pyc")
第一种方法输出文件在子目录__pycache__中,而且文件名是test.python-34.pyc,有两个点,不好!所以一定要用第二种格式输出文件在当前当前目录。其它选项都缺省就行, -1 表示优化,所以pyo文件也不用去做了。
(3) pyc文件的运行
不能在python的交互界面中运行(run 和 exec都不行)。只能够在DOS屏幕上运行, 格式为:
python test.pyc [argv]
在程序中调用可以用:
os.system ("python test.pyc ")
(4)内建函数compile()的语法
compile(source, filename, mode[, flags[, dont_inherit]]) -> code
object。
生成一个code对象。
例子:
yuju = "print('hello')"
hc = compile(yuju, "yuju.err", "single")
exec(hc)
输出:hello
type(hc) --> code
使用时至少要提供3个参数,source是源代码,它可以是语句、表达式或代码文件。filename要求一个文件名储存出错信息,mode是编译模式,只能使用如下3种:exec, eval, single。
❾ 为什么我运行python代码后目录下不会生成pycache文件
如果程序需要使用一些配置文件时,一般也是用相对路径的,这样也容易出问题,这时需要在启动程序时切换到程序所在的路径。
sys.path[0] 是程序所在的目录,在程序开头处加上 os.chdir(sys.path[0]) 就可以了。
如果是使用 py2exe 打包的程序,sys.path[0] 值是 路径名\library.zip , 再处理一下这个就可以:
ddir = sys.path[0]
if os.path.isfile(ddir):
ddir,filen = os.path.split(ddir)
os.chdir(ddir)