首页 > 解决方案 > Python setup.py 导入 python 文件

问题描述

我尝试使用 setup.py 编写一个名为“欺诈”的包

from setuptools import setup

setup(name='fraud',
      version='0.1',
      install_requires=[
          'gremlinpython==3.3.3',
      ],
      py_modules=['fraud.graph2j',
                  'fraud.config'],
      entry_points = {
          'console_scripts': [
              'graph2j=fraud.graph2j:main',
          ]
      })

python文件graph2j.py包含

from . import config
import argparse
import os

def main():
    print "Hey it works!"

我注意到当我跑步时

python setup.py install

config.py被复制到build/lib/fraud/,当我运行时

graph2j

我明白了

Hey it works!

我想知道是否有一种方法可以不将config.py复制到build/lib/fraud/并且没有在 setup.py 中指定py_modules?现在,如果我从 py_modules 中删除“fraud.config”,我会收到以下错误

 Traceback (most recent call last):
   File "/Users/[bla]/anaconda2/bin/graph2janus", line 11, in <module>
     load_entry_point('fraud==0.1', 'console_scripts', 'graph2j')()
   File "/Users/[bla]/anaconda2/lib/python2.7/site-     packages/pkg_resources/__init__.py", line 480, in load_entry_point
     return get_distribution(dist).load_entry_point(group, name)
   File "/Users/[bla]/anaconda2/lib/python2.7/site-     packages/pkg_resources/__init__.py", line 2691, in load_entry_point
     return ep.load()
   File "/Users/[bla]/anaconda2/lib/python2.7/site-     packages/pkg_resources/__init__.py", line 2322, in load
     return self.resolve()
        File "/Users/[bla]/anaconda2/lib/python2.7/site-     packages/pkg_resources/__init__.py", line 2328, in resolve
     module = __import__(self.module_name, fromlist=['__name__'], level=0)
   File "build/bdist.macosx-10.6-x86_64/egg/fraud/graph2j.py", line 1, in <module>
 ImportError: cannot import name config

标签: pythonpython-2.7

解决方案


当您说“将我所有的自定义 python 文件复制到库中”时,您的意思是导入它们吗?如果是这样,您可以使用:

import config

如果您不希望配置在被调用之前运行,请添加

if "__name__" == "__main__":

这样它只会在调用配置中的任何内容时运行。

我希望这有帮助!


推荐阅读