pyinstaller - 代码中使用os.system() os.popen() 打包后找不到模块的问题

当使用os.system()或os.popen()在PyInstaller打包的代码中调用模块时,可能会因路径问题导致找不到模块。解决办法是在程序开始时通过sys.path.insert(0, path)或sys.path.append()添加模块的搜索路径。遇到的问题包括:获取正确路径(避免使用os.getcwd())、打包选项-Fw的影响、Unicode错误、中文文件夹名问题以及编码问题。对于编码问题,可能需要修改cmd的语言设置或处理代码中的编码格式。" 122506510,11151787,Flink自定义函数与富函数实战,"['flink', '大数据', 'big data']
摘要由CSDN通过智能技术生成

困扰了半天终于理顺了

之所以找不到对应的模块 是因为os.system() 使用的是当前系统的搜索路径   如虚拟环境中有  真实环境中没有  或者是发给其他用户使用 均会提示对应错误

解决的根源 在于给系统增加上对应的搜索路径  即 sys.path.insert(0, path) 或 sys.path.append()

参考代码如下

# 在生产新文件的最上方 导入对应模块

# 生成文件
text_content = """#!/usr/bin/python3.7 
# -*- coding: utf-8 -*-  
# cython: language_level=3
import sys, os
print(r'{}')
sys.path.insert(0, r'{}')
print(sys.path)
from distutils.core import setup
from Cython.Build import cythonize

setup(
	name = '{}_cavpyd',
	ext_modules = cythonize("{}"))
			""".format(self.curworkpath, self.curworkpath, 
				os.path.splitext(file_name)[0], file_name)

			covfilename = os.path.splitext(file_name)[0]
			covfilepath = self.dirpath + '/' + covfilename + '_covtext.py'
			
			with open (covfilepath, 'w+') as f:
				f.write(text_content)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值