相关疑难解决方法(0)

2074
推荐指数
12
解决办法
100万
查看次数

有人可以在Python中解释__all__吗?

我越来越多地使用Python,并且我一直__all__在不同的__init__.py文件中看到变量集.有人可以解释这是做什么的吗?

python syntax namespaces

873
推荐指数
10
解决办法
26万
查看次数

如何导入其他Python文件?

如何在Python中导入其他文件?

  1. 我怎样才能导入特定的python文件import file.py
  2. 如何导入文件夹而不是特定文件?
  3. 我想根据用户输入在运行时动态加载Python文件.
  4. 我想知道如何从文件中加载一个特定的部分.

例如,main.py我有:

from extra import * 
Run Code Online (Sandbox Code Playgroud)

虽然这给了我所有的定义extra.py,但也许我想要的只是一个定义:

def gap():
    print
    print
Run Code Online (Sandbox Code Playgroud)

我怎么添加到import语句只得到gapextra.py

python python-import

702
推荐指数
13
解决办法
141万
查看次数

如何编写Python模块/包?

我一直在为工作中的简单任务制作Python脚本,从来没有真正打扰包装它们以供其他人使用.现在我被分配为REST API创建一个Python包装器.我完全不知道如何开始,我需要帮助.

是)我有的:

(只是想尽可能具体)我已经准备好了virtualenv,它也在github中,python的.gitignore文件也是,还有用于与REST API交互的请求库.而已.

这是当前目录树

.
??? bin
?   ??? /the usual stuff/
??? include
?   ??? /the usual stuff/
??? lib
?   ??? python2.7
?       ??? /the usual stuff/
??? local
?   ??? /the usual stuff/
??? README.md

27 directories, 280 files
Run Code Online (Sandbox Code Playgroud)

我甚至不知道把.py文件放到哪里,如果我做的话.

我想做什么:

使用"pip install ..."安装python模块

如果可能的话,我想要编写Python模块的一般步骤.

python python-module python-2.7

353
推荐指数
4
解决办法
35万
查看次数

使用pytest正确导入

我刚刚设置为使用python与Python 2.6.到目前为止,除了处理"导入"语句之外,它运行良好:我似乎无法以与我的程序相同的方式响应导入.

我的目录结构如下:

src/
    main.py
    util.py
    test/
        test_util.py
    geom/
        vector.py
        region.py
        test/
            test_vector.py
            test_region.py
Run Code Online (Sandbox Code Playgroud)

要运行,我python main.py从src/调用.

在main.py中,我导入了vector和region

from geom.region import Region
from geom.vector import Vector
Run Code Online (Sandbox Code Playgroud)

在vector.py中,我导入了区域

from geom.region import Region
Run Code Online (Sandbox Code Playgroud)

当我在标准运行中运行代码时,这些都可以正常工作.但是,当我从src /调用"py.test"时,它会一直退出导入错误.


一些问题和我的解决方案尝试

我的第一个问题是,当运行"test/test_foo.py"时,py.test无法直接"导入foo.py".我通过使用"imp"工具解决了这个问题.在"test_util.py"中:

import imp
util = imp.load_source("util", "util.py")
Run Code Online (Sandbox Code Playgroud)

这适用于许多文件.它似乎也暗示当pytest运行"path/test/test_foo.py"来测试"path/foo.py"时,它基于目录"path".

但是,"test_vector.py"失败了.Pytest可以找到并导入vector模块,但它无法找到任何vector的进口.使用pytest时,以下导入(来自"vector.py")都会失败:

from geom.region import *
from region import *
Run Code Online (Sandbox Code Playgroud)

这些都给出了表格的错误

ImportError: No module named [geom.region / region]
Run Code Online (Sandbox Code Playgroud)

我不知道接下来要做什么来解决这个问题; 我对Python中导入的理解是有限的.

使用pytest时处理导入的正确方法是什么?


编辑:非常黑客的解决方案

vector.py,我更改了import语句

from geom.region import Region
Run Code Online (Sandbox Code Playgroud)

简单地说

from region …
Run Code Online (Sandbox Code Playgroud)

python import pytest

35
推荐指数
5
解决办法
2万
查看次数

"包"和"模块"之间有什么区别

我使用Java,我们只有包.我知道还有其他编程语言也包含模块.

有什么不同?

谢谢

java comparison module package

32
推荐指数
4
解决办法
5万
查看次数

如何获取当前运行的模块路径/名称

我搜索过,这似乎是一个简单的问题而没有一个简单的答案.

我有a/b/c.py要调用的文件python -m a.b.c.我想获得a.b.c模块级别的值.


USAGE = u'''\
Usage:
    python -m %s -h
''' % (what_do_i_put_here,)
Run Code Online (Sandbox Code Playgroud)

因此,当我收到-h选项时,我会显示USAGE而不需要在每个脚本中实际记下实际值.

我真的需要通过inspect才能获得所需的价值吗?

谢谢.

编辑:如上所述,有答案(我已经搜索过),但不是简单的答案.使用inspect,使用traceback或操作__file__,__package__并做一些子串来得到答案.但没有什么比我在模块中有一个类的简单,我可以使用myClass.__module__,我会得到我想要的答案.__name__(不幸的是)使用是无用的,因为它总是如此__main__.

此外,这是在python 2.6中,我不能使用任何其他版本.

python python-2.6

30
推荐指数
4
解决办法
4万
查看次数

sklearn没有属性'datasets'

我已经开始使用sckikit-learn来完成我的工作.所以我正在阅读教程,该教程给出了加载一些数据集的标准过程:

$ python
>>> from sklearn import datasets
>>> iris = datasets.load_iris()
>>> digits = datasets.load_digits()
Run Code Online (Sandbox Code Playgroud)

但是,为方便起见,我尝试按以下方式加载数据:

In [1]: import sklearn

In [2]: iris = sklearn.datasets.load_iris()
Run Code Online (Sandbox Code Playgroud)

但是,这会引发以下错误:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-2-db77d2036db5> in <module>()
----> 1 iris = sklearn.datasets.load_iris()

AttributeError: 'module' object has no attribute 'datasets'
Run Code Online (Sandbox Code Playgroud)

但是,如果我使用明显相似的方法:

In [3]: from sklearn import datasets

In [4]: iris = datasets.load_iris()
Run Code Online (Sandbox Code Playgroud)

它没有问题.实际上以下也有效:

In [5]: iris = sklearn.datasets.load_iris()
Run Code Online (Sandbox Code Playgroud)

我对此完全感到困惑.我错过了一些非常微不足道的事情吗?这两种方法有什么区别?

python machine-learning python-3.x scikit-learn

19
推荐指数
1
解决办法
8495
查看次数

如何将包发送给PyPi?

我写了一个小模块,我想知道包装它的基本步骤是什么,以便将其发送到pypi:

  • 什么是文件层次结构?
  • 我该如何命名文件?
  • 我应该使用distutils来创建PKG-INFO吗?
  • 我应该在哪里包含我的文件(用狮身人面像制作)?

python packaging distutils pypi python-sphinx

15
推荐指数
1
解决办法
3875
查看次数

Python 模块 vs 子模块 vs 包 vs 子包

在Python中,模块、子模块、包和子包之间有什么区别?

python module

13
推荐指数
1
解决办法
3229
查看次数