我们正在使用部署在Windows和Linux上的代码存储库-有时在不同的目录中。项目中的一个模块应该如何引用项目中的一个非python资源(CSV文件等)?
如果我们这样做:
thefile = open('test.csv')
or:
thefile = open('../somedirectory/test.csv')
只有当脚本从一个特定目录或目录的一个子集运行时,它才会工作。
我想做的是:
path = getBasePathOfProject() + '/somedirectory/test.csv'
thefile = open(path)
这可能吗?
我被难住了。想把一些资源文件打包到一个轮子文件中并访问它们。使用清单文件打包,但是pip install没有安装它,除非它是一个子目录。希望这些场景照片能有所帮助
├── cnn_client
│ ├── image_preprocessor.py
│ ├── __init__.py
│ ├── resources
│ │ ├── mscoco_complete_label_map.pbtxt
│ │ ├── retinanet_complete_label_map.pbtxt
│ │ └── retinanet_label_map.py
│ ├── tf_client.py
MANIFEST.in
recursive-include cnn_client/resources *
使用标准setup.py创建了一个weel。PIP安装了车轮文件。
安装后检查资源是否安装。他们是
ls /usr/local/lib/python2.7/dist-packages/cnn_client/resources
mscoco_complete_label_map.pbtxt
retinanet_complete_label_map.pbtxt
retinanet_label_map.py
在tfclient.py中访问这些文件。从
templates_dir = os.path.join(os.path.dirname(__file__), 'resources')
file_path = os.path.join(templates_dir, \
'mscoco_complete_label_map.pbtxt')
s = open(file_path, 'r').read()
这很有效。
如果您正在使用安装工具或分发(setup.py安装),那么访问这些打包资源的“正确”方式似乎是使用package_resources。
对你来说,这个例子就是
import pkg_resources
my_data = pkg_resources.resource_string(__name__, "foo.dat")
当然,是哪个读取了资源,读取的二进制数据是my_data的值
如果你只是需要文件名,你也可以使用
resource_filename(package_or_requirement, resource_name)
例子:
resource_filename("MyPackage","foo.dat")
这样做的好处是,即使它是一个像鸡蛋一样的存档发行版,它也能保证工作。
看到http://packages.python.org/distribute/pkg_resources.html resourcemanager-api
我被难住了。想把一些资源文件打包到一个轮子文件中并访问它们。使用清单文件打包,但是pip install没有安装它,除非它是一个子目录。希望这些场景照片能有所帮助
├── cnn_client
│ ├── image_preprocessor.py
│ ├── __init__.py
│ ├── resources
│ │ ├── mscoco_complete_label_map.pbtxt
│ │ ├── retinanet_complete_label_map.pbtxt
│ │ └── retinanet_label_map.py
│ ├── tf_client.py
MANIFEST.in
recursive-include cnn_client/resources *
使用标准setup.py创建了一个weel。PIP安装了车轮文件。
安装后检查资源是否安装。他们是
ls /usr/local/lib/python2.7/dist-packages/cnn_client/resources
mscoco_complete_label_map.pbtxt
retinanet_complete_label_map.pbtxt
retinanet_label_map.py
在tfclient.py中访问这些文件。从
templates_dir = os.path.join(os.path.dirname(__file__), 'resources')
file_path = os.path.join(templates_dir, \
'mscoco_complete_label_map.pbtxt')
s = open(file_path, 'r').read()
这很有效。