标签: python-module

测试正在安装的Python模块依赖项

考虑到模块的名称,如何测试是否安装了一组模块.例如

modules = set(["sys", "os", "jinja"])

for module in modules:
  # if test(module exists):
  #   do something
Run Code Online (Sandbox Code Playgroud)

虽然可以将测试写成:

try:
  import sys
except ImportError:
  print "No sys!"
Run Code Online (Sandbox Code Playgroud)

这对我正在做的事情来说有点麻烦.有没有动态的方法来做到这一点?

我已经尝试了eval("import%s"%module),但是抱怨编译错误.

我很感谢你的想法和建议.谢谢.

python reflection import module python-module

7
推荐指数
3
解决办法
3994
查看次数

python本地模块

我有几个项目目录,并希望拥有特定于它们的库/模块.例如,我可能有这样的目录结构:

myproject/
  mymodules/
    __init__.py
    myfunctions.py
  myreports/
    mycode.py
Run Code Online (Sandbox Code Playgroud)

假设有一个调用的函数addmyfunctions.py,我可以把它称为mycode.py最幼稚的程序:

execfile('../mymodules/myfunctions.py')
add(1,2)
Run Code Online (Sandbox Code Playgroud)

但是为了更加成熟,我也可以做到

import sys
sys.path.append('../mymodules')
import myfunctions

myfunctions.add(1,2)
Run Code Online (Sandbox Code Playgroud)

这是最惯用的方式吗?还有一些关于修改PYTHONPATH(os.environ['PYTHONPATH']?)的提及,但是我应该研究这个或其他什么?

此外,我已经看到import类语句中包含的语句,以及在包含类定义的Python文件顶部定义的其他实例中.有没有正确/首选的方式来做到这一点?

python python-module

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

是否有可能以返回的方式结束python模块导入?

我想知道是否有一种编写以下模块代码的方法,而无需在整个模块代码中添加另一个缩进级别.

# module code
if not condition:
    # rest of the module code (big)
Run Code Online (Sandbox Code Playgroud)

我正在寻找这样的东西:

# module code
if condition:
    # here I need something like a `return`
# rest of the module code (big)
Run Code Online (Sandbox Code Playgroud)

注意,我不想抛出异常,导入应该正常传递.

python python-module

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

Cython对进口做了什么?

我想创建一个Python扩展,我真的很喜欢使用Cython.主要是为了获得更多关于它的知识,并利用速度增益,如果有的话.我已经阅读了相当多的Cython文档,但我还不是计算机科学家(还),并且没有深入的知识来理解低级基础知识,因此我提出以下问题的原因:

我只是想知道,如果我在我正在开发的Python扩展中使用外部导入(例如,ORM或SQL库或任何其他第三方库)会发生什么?

Cython如何处理它?

如果这个导入的库/扩展名是纯Python还是编译它会有区别吗?

处理这个问题的正确方法是什么?

谢谢.

PS.问题以粗体显示.

c python python-module cython python-extensions

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

在制作二进制文件时,PyInstaller找不到libpython2.7.so?

我正在尝试在Linux上使用PyInstaller 2.0制作Python脚本的二进制版本.当我跑:

$ python pyinstaller.py myscript.py
Run Code Online (Sandbox Code Playgroud)

我收到错误:

8907 INFO: Looking for Python library libpython2.7.so
Traceback (most recent call last):
...
  File "pyinstaller.py", line 91, in <module>
    raise IOError("Python library not found!")
IOError: Python library not found!
Run Code Online (Sandbox Code Playgroud)

怎么解决这个问题?

我在用:

Linux#98-Ubuntu x86_64 GNU/Linux

用python 2.7.系统上还有其他的Pythons但是我已经设定了:

alias python="python2.7"
Run Code Online (Sandbox Code Playgroud)

在我正在使用的服务器中,只有/usr/lib/python2.6而且没有,/usr/lib/python2.7但是我经常使用python 2.7并且功能正常等等所以我不明白为什么找到它的库会有问题.有一个/usr/local/lib/libpython2.7.a.

python python-module pyinstaller python-2.7

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

django中的python模块未正确导入

在尝试使用RaspberryPi上安装的RPi python模块时,在我的views.py中的一个请求定义中使用它我得到

Module not imported correctly!
Run Code Online (Sandbox Code Playgroud)

这是我得到的追溯.请注意,我使用此回购作为起点.

在Django中安装RPi并正确使用它的正确方法是什么?我需要RPi,因为我的运动传感器,使用本教程作为运动传感器的起点,但想将它集成到django视图(页面)

python django python-module raspberry-pi

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

__init__.py无法找到本地模块

借用http://pythoncentral.io/how-to-create-a-python-package/上的简化示例

我有一个类似的文件结构如下,其中Mammals.py和Birds.py定义具有相同名称的类:

Project/
  Animals/
    __init__.py
    Mammals.py
    Birds.py
Run Code Online (Sandbox Code Playgroud)

Project/目录中运行ipython解释器并且__init__.py为空时,以下工作:

from Animals.Mammals import Mammals
x = Mammals()
x.printMammals()
Run Code Online (Sandbox Code Playgroud)

我希望能够写from Animals import Mammals而不是from Animals.Mammals import Mammals.我相信这样做的方法是使__init__.py文件内容如下:

from Mammals import Mammals
from Birds import Birds
Run Code Online (Sandbox Code Playgroud)

但是,完成此操作后,从类似的Project/源ipython解释器中,以下输入会产生错误:

In [1]: from Animals import Mammals
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-1-6d651848af9b> in <module>()
----> 1 from Animals import Mammals

/Users/username/Project/Animals/__init__.py in <module>()
----> 1 from Mammals import Mammals
      2 from Birds …
Run Code Online (Sandbox Code Playgroud)

python packages python-module init

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

将python模块从一个系统复制到另一个系统

是否可以将所有python模块从一台Windows计算机复制到另一台计算机?它们都运行相同版本的Python 2.7.12。

这样做的原因是我可以在其中一个上访问Internet,而在另一个上手动安装模块则由于依赖而需要大量时间。

windows python-module python-2.7

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

从两条不同路径导入的类不相等?

似乎使用两个不同的PYTHONPATHs 导入的实体不是相同的对象.

我在我的代码中遇到了一个小问题,我想用一个小例子来解释它.

我创建了源代码树:

a/
  __init__.py
  b/
    __init__.py
    example.py
Run Code Online (Sandbox Code Playgroud)

在example.py中:

class Example:
  pass
Run Code Online (Sandbox Code Playgroud)

从文件夹的父级a,我运行python和这个测试:

>>> import sys
>>> sys.path.append("/home/marco/temp/a")
>>> 
>>> import a.b.example as example1
>>> import b.example as example2
>>> 
>>> example1.Example is example2.Example
False
Run Code Online (Sandbox Code Playgroud)

所以问题是:结果为什么False?即使通过两个不同的路径导入,该类也是相同的.如果类是自定义异常并且您尝试捕获它,那么这是一个完全混乱except.

用python 3.4.3测试

python python-module python-import

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

配置conda构建以从conda包输出中排除某些文件夹

tl; dr:

如何排除打包文件夹conda build

语境

我正在使用构建第一个软件包conda build

我的meta.yaml文件如下所示:

package:
    name: 'some_name'
    version: {{ load_setup_py_data().get('version') }}

source:
    path: ./

build:
    script: python setup.py install --single-version-externally-managed --record=record.txt

requirements:
    run:
        - python >=3.6
        - pandas >=0.2
        - numpy >=1.12
        # Packages that must be installed
        # in the user's conda environment
        # to run this package.

    build:
        # Packages used by setup.py
        # to install this package.
        # May also install compilers
        # for non-python code.
        - python
        - …
Run Code Online (Sandbox Code Playgroud)

python python-module anaconda conda conda-build

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