最小模块

时间:2017-06-22 09:23:39

标签: python

我分叉了很好的模块multiscorer,我试图把它变成一个我可以安装在不同环境中的软件包。

我的叉子可以找到here。我采取的步骤是

  • 创建一个新环境(使用conda)并激活它
  • 来自fork 的根目录的
  • python setup.py install
  • 在新终端中,激活环境并移动到某个任意位置。开始ipython并尝试from multiscorer import MultiScorer

我收到以下错误ImportError: cannot import name 'MultiScorer'。但请注意,import multiscorer工作得很好。我需要更改代码才能使用python setup.py install启用安装?

另一次尝试:我尝试将packages=['multiscorer']替换为py_modules=['multiscorer.multiscorer']。没有帮助......

2 个答案:

答案 0 :(得分:2)

您的setup.py没问题。问题是包结构。现在,导入Multiscorer类的正确方法是:from multiscorer.multiscorer import Multiscorer。第一个multiscorer用于同名的文件夹(包),第二个multiscorer用于包内的multiscorer.py模块。

The docs建议将所有代码放在__init__.py内以获取此类小包。 如果您的代码库后来对于一个文件而言变得太大,您可以开始引入其他模块并使用__init__.py在包级别上公开类/函数。

希望这有帮助。

答案 1 :(得分:0)

事实证明我试图导入错误的东西。以下内容:.table{width: 100%; border: 1px solid #333; display: table; position:relative; } .table .row{ clear: both; position: relative; } .table .row + .row{ border-top: 1px solid #333; } .table .col{ display: inline-block; float: left; } .table .col + .col{ border-left: 1px solid #333; } .col.col25{ width: calc( 25% - 1px ); /*-1 for the border between cell, in this example */ background-color: yellow; } .col.col50{ width: calc( 50% - 1px ); /*-1 for the border between cell, in this example */ background-color: red; } .col.col75{ width: calc( 75% - 1px ); /*-1 for the border between cell, in this example */ background-color: yellow; }有效。

我现在想知道这是 pythonic 方式。