我有一个可执行的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文件的props文件位置为:
PROP_FILE = "i_Props.ini"
并试图打开它,然后失败。我不想硬编码路径,原因很明显。
在主文件中添加os.getcwd()
的快速测试证实了我的怀疑,即它认为CWD是根目录,而对__file__
的检查表明它是符号链接(“build_i”)。
我可以做些什么来让python使用__file__
名称和CWD的类似符号的目的地吗?
3条答案
按热度按时间iyfjxgzm1#
您可以使用
__file__
,但必须采取一些预防措施才能获得真实的的路径:然后加载与base_dir相关的其他文件/资源:
cig3rfwq2#
只有几种可能性浮现在脑海中:
1.在根目录下有一个shell文件,它通过显式路径调用你的python脚本。
1.将它所在的目录添加到路径中。
1.特别是将目录添加到sys.path
rbl8hiat3#
要从符号链接启动Python脚本并让脚本使用链接目标的路径,最简单的方法是:
例如,我喜欢将脚本及其关联文件放在/usr/local/lib/myapp中
然后为了方便起见,我在/usr/local/bin/中创建了一个指向/usr/local/lib/myapp/ www.example.com的符号链接myapp.py:
在www.example.com中myapp.py我会看到以下内容: