Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “控制台”脚本如何从“包”数据访问文件`_Python_Python 2.7_Setuptools_Setup.py - Fatal编程技术网

Python “控制台”脚本如何从“包”数据访问文件`

Python “控制台”脚本如何从“包”数据访问文件`,python,python-2.7,setuptools,setup.py,Python,Python 2.7,Setuptools,Setup.py,创建控制台\u脚本作为入口点时,如何访问包中的数据文件(包数据) setup( # other stuff entry_points={ 'console_scripts': [ 'runme = mypackage.a_py_file:a_function_within_the_py_file', ] } ) 目录结构: ├── mypackage │   ├── __init__.py │   └── a_py

创建
控制台\u脚本
作为
入口点
时,如何访问包中的数据文件(
包数据

setup(
    # other stuff
    entry_points={
        'console_scripts': [
            'runme = mypackage.a_py_file:a_function_within_the_py_file',
        ]
    }
)
目录结构:

├── mypackage
│   ├── __init__.py
│   └── a_py_file.py
├── requirements.txt
├── setup.py
└── data 
    ├── a.data
    └── b.data
处理
控制台脚本的Python文件

# a_py_file.py
def a_function_within_the_py_file:
    # HOW TO READ a.data FILE HERE

如何更改cwd

import os
os.chdir(__file__)

conftest.py
听起来是这样做的好地方。或者附加到
测试
命令的文件。

所以这就是我所做的,它起作用了:

import os
import pkg_resources

os.chdir(pkg_resources.get_distribution('mypackage').location)
# running as if the script is invoked from project's root

为什么不使用标准化的
python setup.py测试过程呢?@cel,这些测试不是单元测试。这是一些硒测试,我的用户没有技术知识。我想让他们更简单。这样,他们只需安装一个包并运行它,而不知道它是什么。就像许多支持命令行调用的python工具一样,你如何打包你的应用程序?似乎您在pythonpath中创建了
测试
包,如果您想安装测试,最好进入
mypackage
,这样可以减少冲突,更容易找到它们