我正在制作一个使用数据文件的python包。我在setup.py中添加数据文件,如:
from setuptools import setup, find_packages
setup(
name='foo',
version='1.0',
packages=find_packages(),
package_data={
'foo': ['test.txt'],
},
)
文件排列如下:
/
foo/
__init__.py
foo_module.py
test.txt
setup.py
但像这样的代码
open('test.txt')
当我从包外面调用它时,foo_module.py中的停止工作。我相信这是因为我改变了我当前的工作目录,而且我的cwd中没有文件test.txt。我想我可以通过更改包代码中的当前目录来解决这个问题,如下所示:
curdir = os.getcwd()
os.chdir(os.path.dirname(os.path.abspath(__file__)))
open('test.txt')
os.chdir(curdir)
但是我不确定这个代码在多处理过程中是否可以安全使用,因为它修改了cwd
。我可以使用锁,但我不希望进程只是因为它们改变cwd
而等待彼此。
是否有传统的线程安全方式来访问setup.py中添加到包中的文件?