小编kor*_*tyi的帖子

如何解决Python 3.6中的导入错误?

我有一个非常简单的名称空间包(内容包括在下面,以及目录布局)。如果尝试导入namespace_repro.module,则会出现以下错误:AttributeError: module 'namespace_repro' has no attribute 'module'。据我了解,我的程序包具有有效的布局,导入应该可以进行。有趣的是,该错误仅在Python 3.6.8中存在,并且导入在Python 3.7中成功。

如何重现问题?

我有一个新的目录import-error-repro,在它setup.py(见下文),然后一个嵌套的目录路径src/namespace_repro/module,包含三个文件__init__.pyx.pyy.py。它们的内容:

setup.py

from setuptools import find_namespace_packages, setup

setup(
    name='namespace-repro',
    version='0.1.0',
    python_requires='>=3.6',
    packages=find_namespace_packages('src'),
    package_dir={'': 'src'},
    zip_safe=False,
)
Run Code Online (Sandbox Code Playgroud)

src/namespace_repro/module/__init__.py

from namespace_repro.module.x import x
Run Code Online (Sandbox Code Playgroud)

src/namespace_repro/module/x.py

import namespace_repro.module.y as y

x = y.y
Run Code Online (Sandbox Code Playgroud)

最后src/namespace_repro/module/y.py

y = True
Run Code Online (Sandbox Code Playgroud)

我通过创建了一个全新的Python 3.6 conda环境conda create -n namespace6 python=3.6 ipython,然后将其激活并安装了软件包pip install -e ./import-error-repro(请注意, …

python python-import python-3.x namespace-package

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

试图将java成员函数作为var传递

如果我在REPL中运行以下代码

(let [f '.startsWith] (f "abab" "a"))
Run Code Online (Sandbox Code Playgroud)

它被评估为"a"而不是"true".有人可以解释一下这个令人惊讶的结果吗?

实际上,真正的代码,我想做的工作如下.

(defn set-up-bean! [bean functions-and-parameters]
  (doseq [[f p] functions-and-parameters]
    (f bean p))
  (.init bean))
Run Code Online (Sandbox Code Playgroud)

我想要实现的是,使以下两个函数调用做同样的事情.

(set-up-bean! bean [['.setMember "a"]])
Run Code Online (Sandbox Code Playgroud)

(do
  (.setMember bean "a")
  (.init bean))
Run Code Online (Sandbox Code Playgroud)

clojure

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