相关疑难解决方法(0)

给定完整路径如何导入模块?

如何在完整路径下加载Python模块?请注意,该文件可以位于文件系统中的任何位置,因为它是一个配置选项.

python configuration python-module python-import

1022
推荐指数
18
解决办法
80万
查看次数

在import语句之前设置pythonpath

我的代码是:

import scriptlib.abc
import scriptlib.xyz

def foo():
  ... some operations
Run Code Online (Sandbox Code Playgroud)

但是scriptlib在其他目录中,所以我必须在环境变量"PYTHONPATH"中包含该目录.

无论如何,我可以在导入语句执行之前首先在环境变量"PYTHONPATH"中添加scriptlib目录,如:

import sys
sys.path.append('/mypath/scriptlib')
import scriptlib.abc
import scriptlib.xyz

def foo():
  ... some operations
Run Code Online (Sandbox Code Playgroud)

如果是,那么该值仅用于该命令提示符还是全局?

提前致谢

python path pythonpath

58
推荐指数
2
解决办法
11万
查看次数

导入任意python源文件.(Python 3.3+)

如何.pyPython 3.3+中导入任意python源文件(其文件名可以包含任何字符,并不总是以其结尾)?

我使用imp.load_module如下:

>>> import imp
>>> path = '/tmp/a-b.txt'
>>> with open(path, 'U') as f:
...     mod = imp.load_module('a_b', f, path, ('.py', 'U', imp.PY_SOURCE))
...
>>> mod
<module 'a_b' from '/tmp/a-b.txt'>
Run Code Online (Sandbox Code Playgroud)

它仍然适用于Python 3.3,但根据imp.load_module文档,它已被弃用:

从版本3.3开始不推荐使用:不需要使用加载器来加载模块,并且不推荐使用find_module().

imp模块文档建议使用importlib:

注意新程序应使用importlib而不是此模块.

在不使用已弃用的imp.load_module函数的情况下,在Python 3.3+中加载任意python源文件的正确方法是什么?

python python-3.x python-3.3

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

安装未通过conda或pip找到的shapefile/shapelib

我正在尝试使用Windows 8,Anaconda和iPython 阅读shapefile,以便在本教程之后查看城市中的郊区.

我在命令提示符下尝试了"conda install shapefile"和"pip install shapefile",两者都返回"错误:找不到匹配的包:shapefile".

除此之外,我尝试按照这些链接手动添加它[1] 如何在给定完整路径的情况下导入模块? [2] 导入python模块不在路径上.但是我收到许可错误,这表明我无论如何都没有正确导入它们.

有关如何进行或最佳实践的任何建议表示赞赏.

python gis matplotlib ipython anaconda

11
推荐指数
1
解决办法
2万
查看次数

Python __init__.py vs sys.path.append/insert

知道如何对导入Python模块不在路径,但我还没有遇到过使用Python的__init.py__ VS sys.path.insert.哪种方法更好?是否有任何明显的缺点,如性能?还有一个"Pythonic?"

我能想到的一个场景是,我有一个用户下载并放在任何目录中的程序,所以我不知道绝对路径(除非我以编程方式得到它).文件夹结构是

working dir
    __init__.py
    foo.py
    src/
        my_utils.py
        __init__.py
Run Code Online (Sandbox Code Playgroud)

我没有看到使用__init__.py或更改sys.path之间的任何区别.有没有什么方案你可以想到它会产生什么影响?

我的问题的第2部分是,为什么你必须做任何事情才能从子目录导入模块?我对Python很新,所以也许我不明白为什么摆弄路径或创建init文件是样板文件.对我来说,这似乎是一种不必要的复杂情况.如果我在当前工作目录中有"dir"并说"import dir.my_utils",我不明白为什么我要列出我希望能够在__init__.py中导入的所有内容.

如果这是重复的道歉,但我在发布之前进行了搜索.

编辑:这是另一个有用的链接:自动调用常见的初始化代码而不创建__init__.py文件

python coding-style python-2.7

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