Python 将.py转换为.exe时无法包含.txt文件

Python 将.py转换为.exe时无法包含.txt文件,python,exe,pyinstaller,Python,Exe,Pyinstaller,我最近制作了一个应用程序,使用selenium自动分配提交内容。我想将这个.py文件转换为.exe文件,这样我就可以将它提供给其他人在他们的计算机上使用 这是项目的当前目录: C: canvas automation chromedriver.exe main.py canvas_subjects.txt 在main.py文件中,它使用canvas_subjects.txt文件,如下所示: with open('c:/canvas automat

我最近制作了一个应用程序,使用selenium自动分配提交内容。我想将这个.py文件转换为.exe文件,这样我就可以将它提供给其他人在他们的计算机上使用

这是项目的当前目录:

C:
   canvas automation
       chromedriver.exe
       main.py
       canvas_subjects.txt
在main.py文件中,它使用canvas_subjects.txt文件,如下所示:

with open('c:/canvas automation/canvas_subjects.txt', 'r+') as subjects:
    chrome_dir = 'C:/PythonProjects/Web Scraping/Selenium/chromedriver.exe'
    driver = webdriver.Chrome(chrome_dir)
    driver.minimize_window()
    if subjects.read() != '':
       # does the rest of the program here
当我尝试将main.py转换为.exe时,运行.exe文件会产生错误:

Failed to execute main script
我猜当它运行python脚本时,它找不到以下目录:

c:/canvas automation/canvas_subjects.txt
要将此文件转换为.exe,我已尝试使用pyinstaller:

C:\Users\user> pip install pyinstaller
C:\Canvas Automation> pyinstaller main.py
# also tried
C:\Canvas Automation> pyinstaller --onefile -w main.py
.exe文件已创建,但输出相同的错误

我已经尝试过auto py to exe,但它说您需要将以下代码合并到脚本中,以便.exe文件可以找到目录,但我不知道如何使用它:

def resource_path(relative_path):
    """ Get absolute path to resource, works for dev and for PyInstaller """
    try:
        # PyInstaller creates a temp folder and stores path in _MEIPASS
        base_path = sys._MEIPASS
    except Exception:
        base_path = os.path.abspath(".")
    
    return os.path.join(base_path, relative_path)

不能在那样的exe中包含txt文件。这里有两种解决方案:

  • 将.txt文件与.exe一起作为安装的一部分交付
  • 将文本文件的内容作为字符串变量放入.py文件中
  • NB1:你确定你需要一个exe吗?您不能将其作为python软件分发,需要执行python吗?
    NB2:无论哪种方式,如果你打算发布你的软件,你真的不应该使用像“c:…”这样的绝对路径


    如果在包含.txt文件时遇到问题,请按顺序尝试以下命令以启用它: CTRL+A 退格 CTRL+S ALT+F4


    如果问题仍然存在,请告诉我。

    谢谢您的帮助。如果我计划分发,你能建议我应该如何设置文件吗?然而,不制作.exe文件是有意义的。