Python脚本从主目录运行

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可执行文件(
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
。路径不是静态的,它会因用户而异