Python脚本从主目录运行
我有一个pyinstaller可执行文件(Python脚本从主目录运行,python,macos,pyinstaller,Python,Macos,Pyinstaller,我有一个pyinstaller可执行文件(pyinstaller-F script.py)和.db文件。两者都位于/home/dev/dist目录中。此脚本无法找到.db文件,尽管它位于同一目录中。我发现脚本总是从/home目录运行 如何将路径从/home更改为脚本运行的实际目录?我不知道这是macOS还是pyinstaller功能 注意:我不需要将.db文件添加到可执行文件中。它应该是独立的,但与脚本位于同一目录中 import os os.chdir("Your Path") 我不知道
pyinstaller-F script.py
)和.db
文件。两者都位于/home/dev/dist
目录中。此脚本无法找到.db
文件,尽管它位于同一目录中。我发现脚本总是从/home
目录运行
如何将路径从/home
更改为脚本运行的实际目录?我不知道这是macOS还是pyinstaller功能
注意:我不需要将.db
文件添加到可执行文件中。它应该是独立的,但与脚本位于同一目录中
import os
os.chdir("Your Path")
我不知道这是否是您想要的,但您也可以尝试:
import glob
glob.glob("Your Path/*.db") #This will show all files with .db extension in path
您可以使用列表索引运行.db文件
我不知道这是否是您想要的,但您也可以尝试:
import glob
glob.glob("Your Path/*.db") #This will show all files with .db extension in path
您可以使用列表索引运行.db文件我也有同样的问题。
它实际上并没有在主目录中运行,只是在PyInstaller中编译后,由于某种原因,很难找到真正的目录。
PyInstaller文档建议在代码中使用以下内容来获取实际路径:
import sys, os
if getattr(sys, 'frozen', False):
# If the application is run as a bundle, the pyInstaller bootloader
# extends the sys module by a flag frozen=True and sets the app
# path into variable _MEIPASS'.
dir_path = sys._MEIPASS
else:
dir_path = os.path.dirname(os.path.abspath(__file__))
获得真实路径后,可以连接:
real_file_location = f'{dir_path}/my_file.db'
就这样。确保在构建可执行文件时使用--add data
操作符指定程序需要的文件。例如:
% pyinstaller --add-data my_file.db:. --add-data another_file.json:. /directory/to/your/code/script.py
这些东西应该可以确保PyInstaller可执行文件能够找到它需要的文件。我也有同样的问题。
它实际上并没有在主目录中运行,只是在PyInstaller中编译后,由于某种原因,很难找到真正的目录。
PyInstaller文档建议在代码中使用以下内容来获取实际路径:
import sys, os
if getattr(sys, 'frozen', False):
# If the application is run as a bundle, the pyInstaller bootloader
# extends the sys module by a flag frozen=True and sets the app
# path into variable _MEIPASS'.
dir_path = sys._MEIPASS
else:
dir_path = os.path.dirname(os.path.abspath(__file__))
获得真实路径后,可以连接:
real_file_location = f'{dir_path}/my_file.db'
就这样。确保在构建可执行文件时使用--add data
操作符指定程序需要的文件。例如:
% pyinstaller --add-data my_file.db:. --add-data another_file.json:. /directory/to/your/code/script.py
这些应该确保PyInstaller可执行文件能够找到它需要的文件。可能重复的可能重复的确定但如何获得实际路径
os.path.dirname(os.path.realpath(_文件__))
返回/home
。路径不是静态的,它会随着用户的不同而变化。好的,但是如何获得真实的路径呢os.path.dirname(os.path.realpath(_文件__))
返回/home
。路径不是静态的,它会因用户而异