我有一个可执行的Python脚本,存在于“scripts”目录中,在根目录中有一个指向该脚本的符号链接(用于启动文件)。就像这样:
我希望能够通过以下方式启动/运行我的脚本:
.
├── scripts
│ ├── const.py
│ ├── fops.py
│ ├── i_build.py
│ └── i_Props.ini
└── build_i -> scripts/i_build.py
我希望能够通过以下方式启动/运行我的脚本:
python build_i
从根目录开始,i_build.py脚本将尝试打开i_Props.ini并根据其中的内容进行一些操作。
问题在于,当通过根目录中的符号链接启动i_build.py脚本时,i_build.py脚本将在根目录中查找其他文件(而不是存储i_build.py的/scripts目录)。
i_build.py文件的属性文件位置为:
PROP_FILE = "i_Props.ini"
尝试打开文件失败,我不想硬编码路径,这是显而易见的原因。
在主文件中添加 os.getcwd()
进行快速检测确认了我的猜想,它认为当前工作目录是根目录,并且对 __file__
的检查显示它是符号链接 ("build_i")。
有什么办法让Python使用符号链接的目标文件作为 __file__
名称和当前工作目录吗?
os.readlink()
读取符号链接,并使用subprocess.Popen()
从结果运行脚本。有些笨拙,但作为没有硬编码并且不添加依赖项的解决方案来完成工作。 - ThinkChaos