相关疑难解决方法(0)

相对进口数十亿次

我来过这里:

还有很多我没有复制的网址,有些在SO上,有些在其他网站上,当我认为我有快速解决方案的时候.

永远反复出现的问题是:使用Windows 7,32位Python 2.7.3,如何解决这个"非包装中尝试相对导入"的消息?我在pep-0328上构建了一个包的精确副本:

package/
    __init__.py
    subpackage1/
        __init__.py
        moduleX.py
        moduleY.py
    subpackage2/
        __init__.py
        moduleZ.py
    moduleA.py
Run Code Online (Sandbox Code Playgroud)

我确实在适当的模块中创建了名为spam和eggs的函数.当然,它没有用.答案显然在我列出的第4个网址中,但这对我来说都是校友.我访问过的其中一个网址上有此回复:

相对导入使用模块的name属性来确定模块在包层次结构中的位置.如果模块的名称不包含任何包信息(例如,它设置为'main'),则解析相对导入,就像模块是顶级模块一样,无论模块实际位于文件系统的哪个位置.

上面的反应看起来很有希望,但它对我来说都是象形文字.所以我的问题是,如何让Python不回归"尝试非包装中的相对导入"?有一个答案涉及-m,据说.

有人可以告诉我为什么Python会给出错误信息,非包装意味着什么!,为什么以及如何定义"包裹",并且准确的答案足以让幼儿园儿童理解.

编辑:导入是从控制台完成的.

python import relative-path python-2.7

564
推荐指数
8
解决办法
17万
查看次数

导入语句python3的更改

我不理解pep-0404的以下内容

在Python 3中,包中的隐式相对导入不再可用 - 仅支持绝对导入和显式相对导入.此外,星型导入(例如来自x import*)仅允许在模块级代码中使用.

什么是相对进口?在python2中允许星形导​​入的其他地方?请举例说明.

python python-3.x

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

如何在Cython的setup.py中指定Python 3源?

我正在尝试根据本教程http://docs.cython.org/src/tutorial/cython_tutorial.html#cython-hello-world在Cython中创建“ Hello World”程序

我创建了helloworld.pyx

print("Hello World")
Run Code Online (Sandbox Code Playgroud)

和setup.py:

from distutils.core import setup
from Cython.Build import cythonize

setup(
    ext_modules = cythonize("helloworld.pyx")
)
Run Code Online (Sandbox Code Playgroud)

如何更改setup.py以指定源是Python 3,而不是本教程中的Python 2?如果我从命令行调用“ cython”命令,它将接受-3选项。但是,如果我python setup.py build_ext --inplace按照本教程中所示进行编译,该如何指定Python 3源?对于Hello World程序来说,它可能无关紧要,但是随着我开始在实际项目中使用Cython时,它会变得很重要。

非常感谢!

python cython python-3.x

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

如何测试Cython中的函数cdef?

我有一个.pyx文件,我在其中定义了一些函数,例如

cdef double foo(double a) nogil:
    return 3. * a
Run Code Online (Sandbox Code Playgroud)

我怎样才能在pyx文件之外对这些函数的行为进行单元测试?由于它们是cdef'd,我无法简单地导入它们......

python unit-testing cython

12
推荐指数
1
解决办法
1068
查看次数

Cython的language_level 3和3str有什么区别?

在即将到来的Cython 3.0版本中,3strlanguage_level(由Cython 0.29引入)成为新的默认值,而不是当前的默认值2,即,如果未设置language_level(如何设置),则会收到以下警告:

FutureWarning:未设置Cython指令'language_level',暂时使用'3str'(Py3)。这与以前的版本有所不同!文件:/home/ed/mygithub/cython/foo.pyx tree = Parsing.p_module(s,pxd,full_module_name)

但是3str3语言级别和语言级别之间有什么区别?对于哪些代码,使用语言级别3str3语言级别编译的模块的行为会有所不同吗?

python cython

6
推荐指数
1
解决办法
109
查看次数

Cython 在 Windows 中使用 mingw64 编译错误“无法将类型 'double' 分配给 'int'”,但在 linux 中正常

我在安装traj-dist 使用Cython. 在Linux下使用gcc编译后可以安装,但在winodws下使用mingw64 gcc编译后无法安装。

我使用Python 3.8,Cython 0.29.21。

python setup.py build_ext --inplace --force

完整的输出错误消息在这里

Error compiling Cython file:
------------------------------------------------------------
...
    q=len(Q)

    cc=_compute_critical_values(P,Q,p,q)
    eps=cc[0]
    while(len(cc)!=1):
        m_i=len(cc)/2-1
                    ^
------------------------------------------------------------

traj_dist\cydist\frechet.pyx:535:21: Cannot assign type 'double' to 'int'
Run Code Online (Sandbox Code Playgroud)

有编译错误的文件是https://github.com/bguillouet/traj-dist/blob/master/traj_dist/cydist/frechet.pyx

我怎样才能在windows下编译它?

python cython

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