如何访问 python 包中的 pickle 数据
How to access pickle data in python package
我正在尝试在 PyPI 上发布一个包(作为新手),其中包含存储为 pickle 文件的数据。但我似乎无法读取我的主要代码中的数据。
我的包结构是:
package/
setup.py
MANIFEST.in
package/
package.py
__init__.py
data.pkl
而我在 package.py 中的代码有点像这样:
data = pickle.load(open('data.pkl', 'rb'))
def doSomething(data):
***code to do something on data***
return variable
var = doSomething(data)
当我安装包并尝试导入它时,出现错误:
FileNotFoundError: [Errno 2] No such file or directory: 'data.pkl'
我的 package.py
似乎找不到我的 pickle 文件。是的,我在 setup.py
中设置了 include_package_data = True
并且 pickle 文件是通过 MANIFEST.in
文件加载的。
我已经尝试在 __init__.py
中加载 pickle 文件或指定完整路径 (package/data.pkl
),但是 none 这些都有效。
必须指定data.pkl相对于源代码的路径。这可以使用 __file__
变量来完成(如 所述)。
下面的代码帮我解决了
this_dir, this_filename = os.path.split(__file__) # Get path of data.pkl
data_path = os.path.join(this_dir, 'data.pkl')
data = pickle.load(open(data_path, 'rb'))
我正在尝试在 PyPI 上发布一个包(作为新手),其中包含存储为 pickle 文件的数据。但我似乎无法读取我的主要代码中的数据。
我的包结构是:
package/
setup.py
MANIFEST.in
package/
package.py
__init__.py
data.pkl
而我在 package.py 中的代码有点像这样:
data = pickle.load(open('data.pkl', 'rb'))
def doSomething(data):
***code to do something on data***
return variable
var = doSomething(data)
当我安装包并尝试导入它时,出现错误:
FileNotFoundError: [Errno 2] No such file or directory: 'data.pkl'
我的 package.py
似乎找不到我的 pickle 文件。是的,我在 setup.py
中设置了 include_package_data = True
并且 pickle 文件是通过 MANIFEST.in
文件加载的。
我已经尝试在 __init__.py
中加载 pickle 文件或指定完整路径 (package/data.pkl
),但是 none 这些都有效。
必须指定data.pkl相对于源代码的路径。这可以使用 __file__
变量来完成(如
下面的代码帮我解决了
this_dir, this_filename = os.path.split(__file__) # Get path of data.pkl
data_path = os.path.join(this_dir, 'data.pkl')
data = pickle.load(open(data_path, 'rb'))