gpt4 book ai didi

python - Anaconda 包问题 : An internal module cannot find a data file located in the same directory

转载 作者:太空宇宙 更新时间:2023-11-04 02:36:26 25 4
gpt4 key购买 nike

我正在使用 anaconda conda 包框架构建 python 3.6 包。该包似乎在源文件方面运行良好。没有构建错误等。但是,我正在尝试在我存储的地方添加新功能包中的一些小 CSV 数据文件。我想使用 pandas

加载数据

我遇到的问题是我似乎无法引用亲戚从包内正确的文件路径。如果我是,那么代码就可以工作比如说,当我在一个包中时,Jupyter notebook 不工作。这路径问题似乎是问题出现的方式,但我怀疑它有更多与如何在包中处理内部寻址有关。

错误信息是:

 FileNotFoundError: File b'data.csv' does not exist

此错误的奇怪之处在于 data.csv 文件与尝试访问它的 python 文件位于同一目录中。所以我不明白为什么下面的 python 模块 reader.py 似乎找不到这个文件。

所以让我给出一个包结构和代码的最小示例。

/project
/docs
/packaging
/conda_build_files
bld.bat
build.sh
meta.yaml
/src
/data
__init__.py
reader.py
data.csv #PROBLEM AREA
__init__.py
module1.py
setup.py
README.rst

所以问题是文件reader.py使用pandas读取csv文件进入数据框。 Module1 然后调用 reader 来获取数据。

所以代码设置如下:

##reader.py

import pandas as pd
class Reader():

def read():
return pd.read_csv('data.csv')

然后在 module1 中我有如下代码:

##module1.py

from .data.reader import Reader
import pandas as pd

def main():
dat = Reader.read()
print(dat.head())

所以这就是我收到有关 data.csv 不存在的奇怪错误的地方。现在在这种情况下,我什至不需要相对导入,因为 Reader 类和data.csv 文件位于同一文件夹中。是的,出于某种原因我明白了奇怪的错误信息。

data.csv 文件包含在 MANIFEST.in 文件中。

我的 setup.py 看起来像这样。

try:
from setuptools import setup
except ImportError:
from distutils.core import setup

setup(
name='pkg',
version='0.6.0',
description="desc",
long_description=readme + '\n\n' + history,
author="me",
author_email='me',
url='https://github.com/.../pkg',
packages=[
'pkg',
],
package_dir={'pkg':
'pyugend'},
package_data={
'mydata': ['pkg/data/*.csv'],
},
include_package_data=True,
install_requires=requirements,
license="ISCL",
zip_safe=False,
keywords='pkg',
classifiers=[
'Development Status :: 2 - Pre-Alpha',
'Programming Language :: Python :: 3.6',
],
test_suite='tests',
tests_require=test_requirements
)

meta.yaml 文件也很普通:

package:
name: pkg
version: "0.6"

source:
git_url: https://github....

build:
# noarch_python: True
# preserve_egg_dir: True
entry_points:


requirements:
build:
- python


run:
- python
- numpy
- pandas
- docopt
- matplotlib

about:

license: MIT License

最佳答案

尽管 reader.py 存在于何处,但您创建的 Python 实例仍在您启动的本地目录中运行。换句话说,如果您在 C:\Users\krishnab 中打开 CMD 提示符(或终端)并启动 Python,则该 Python 实例的 C:\Users\krishnab 为它的基地位置。

pd.read_csv('data.csv') 被调用时,Python 在当前工作目录中寻找 data.csv,在这个例子中是 C:\Users\krishnab.


您可以在/data 下添加一个额外的空 python 文件。它只会用于获取data.csv的目录。

/src
/data
__init__.py
reader.py
data.csv
other.py

other.py有内容:

# other.py
pass

reader.py 中,您可以导入other 并使用__file__ 属性来获取路径。

reader.py的内容:

from . import other
import pandas as pd
import os
data_dir = os.path.dirname(os.path.abspath(other.__file__))

class Reader:
def read(self):
return pd.read_csv(data_dir+'/data.csv')

关于python - Anaconda 包问题 : An internal module cannot find a data file located in the same directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47784295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com