anaconda conda
패키지 프레임 워크를 사용하여 python 3.6 패키지를 구축 중입니다. 패키지가 소스 파일과 관련하여 정상적으로 작동하는 것 같습니다. 빌드 오류 등은 없습니다. 그러나 패키지에있는 일부 작은 CSV 데이터 파일을 에 저장하는 새로운 기능을 추가하려고합니다. pandas
Anaconda 패키지 문제 : 내부 모듈이 같은 디렉토리에있는 데이터 파일을 찾을 수 없습니다.
내가 실행중인 문제는 패키지 내에서 상대 파일 경로를 올바르게 참조 할 수 없다는 것입니다. 그래서 코드가 인 경우 작동 할 코드는 Jupyter
노트북 안에 들어있을 때 작동하지 않습니다. 경로 문제는 문제 자체가 나타나는 방식 인 것으로 보이지만 내부 주소 지정이 패키지에서 처리되는 방식과 관련하여 과 관련이 있다고 판단됩니다.
오류 메시지는 다음과 같습니다
는FileNotFoundError: File b'data.csv' does not exist
이 오류에 대한 이상한 점은 data.csv
파일에 액세스하려고하는 파이썬 파일과 같은 디렉토리에있는 것입니다. 그래서 왜 파이썬 모듈 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
이 dataframe에 csv 파일 을 읽을 수
pandas
를 사용한다는 것입니다.
Module1
은
reader
을 호출하여 데이터를 얻습니다.
그래서 코드가 같은 설정은 다음과 같습니다
다음 모듈 1에서 내가 같은 코드가##reader.py
import pandas as pd
class Reader():
def read():
return pd.read_csv('data.csv')
:
##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
파일이 꽤 바닐라 너무 : reader.py
이 존재하는 경우에도 불구하고
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
좋아, 난 당신이 작업 디렉토리에 대해 말하는 것을 얻는다. 그렇다면 데이터 파일이있는 상대 디렉토리를 참조하려면 어떻게해야합니까? 마찬가지로'os' 패키지 나 다른 것을 사용해야합니까? – krishnab
데이터 파일의 경로를 얻는 방법에 대한 추가 정보로 업데이트했습니다. – James
아, 이거 잘 됐네. 도와 주셔서 대단히 감사합니다 @ 제임스. 흥미로운 점은 상대 경로를 사용하기 전에는이 문제가 발생하지 않았지만 이제는 논리를 볼 수 있습니다. 그것은 모두 작동합니다. – krishnab