标签: python-import

如何在 Python 中设置模块的文件名,以便模块中发生的异常使用该文件名?

我正在使用imp库从字符串(不要问)导入模块。这一切都很好,很花哨,但是当这样的模块出现错误时,我会得到这样的堆栈跟踪:

Traceback (most recent call last):
  File "<string>", line 33, in do_something
  File "<string>", line 20, in really_do_something
Exception: STRING FILENAME EXAMPLE
Run Code Online (Sandbox Code Playgroud)

我尝试将模块上的文件属性设置为有意义的值,但<string>文件名仍用于异常回溯中。

关于如何指定异常中使用的文件名的任何想法?

更新:我正在使用这样的小鬼:动态模块导入试图在不应该做的时候进行相对导入

python string python-module python-import

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

Python导入模块vs import _module

在Aptana中配置PyDev的Forced Builtins时,我注意到默认情况下使用_(下划线)前缀引用了一些模块.

所以我打开一个Python解释器,令我惊讶的是,下面的导入工作:

import ast
import _ast
import bisect
import _bisect
import csv
import _csv
# ... and so on
Run Code Online (Sandbox Code Playgroud)

现在,如果我dir()对导入的模块执行操作,我会看到不同的内容:

>>> dir(csv)
['Dialect', 'DictReader', 'DictWriter', 'Error', ...] # and so on
>>> dir(_csv)
['Dialect', 'Error', ...] # node that DictReader and DictWriter are missing
Run Code Online (Sandbox Code Playgroud)

最后,help()告诉我他们显然是不同的模块:

>>> help(_csv)
Help on module _csv:

NAME
    _csv - CSV parsing and writing.

FILE
    /usr/lib64/python2.6/lib-dynload/_csv.so
...

>>> help(csv)
Help on module csv:

NAME
    csv - CSV parsing and …
Run Code Online (Sandbox Code Playgroud)

python python-module python-import

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

我似乎收到 NameError: 'gpio' is not defined

但是已经从另一个程序复制了脚本,这不会出现此错误。我究竟做错了什么?

提前感谢您的建议。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import os
import time
import RPi.GPIO as GPIO

#setup pin 10 as an output

gpio.setmode(gpio.BCM)
gpio.setmode(10, gpio.OUT)

#Make an LED flash on and off forever
while True:
    gpio.output(10, gpio.HIGH)
    time.sleep(1)
    gpio.output(10, gpio.LOW)
    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

python python-import

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

记录导入模块所用的时间

有关背景信息:去这里

我有一个非常大的模块,可以从互联网、其他内置脚本等中获取内容。根据网络速度、内存以及编译列表等因素,导入时间可以在 25 秒到 90 秒之间变化秒。我使用以下代码来跟踪模块导入所需的时间:

def importTime():
    import time
    startTime = time.time()
    import tms              # This is the name of my module
    print("Time taken {}".format(time.time() - startTime)))
Run Code Online (Sandbox Code Playgroud)

当我运行这个:

>>> importTime()
Loading Module. This may take up to 60 seconds. # This is my module output
Time taken 31.49
Run Code Online (Sandbox Code Playgroud)

这就是我想要发生的事情:

>>> import tms
Loading Module. This may take up to 60 seconds.
Time taken: 31.49 seconds
Run Code Online (Sandbox Code Playgroud)

这是我的问题。这是我必须在导入模块之前定义的函数。我需要能够做的是让我的模块能够在启动时做到这一点。我看过这个问题,但它是相同的概念。有没有人有任何想法?

python import python-import

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

有没有办法在一个声明中结合导入和导入?

有没有办法在一个声明中结合导入和导入?

能够:

from random import choice
import random
Run Code Online (Sandbox Code Playgroud)

合并成一个声明?

python python-import

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

导入具有相同名称的方法

所以我有两个单独的Python包,我将其导入到我的Raspberry Pi的Python脚本中.在这种情况下;

from rflib import*
from Rpi.GPIO import*
Run Code Online (Sandbox Code Playgroud)

但是,两个包都有自己独立的方法 cleanup(self)

因此,在脚本结束时,当我使用命令时,我 cleanup()如何a)知道方法来自哪个包(它们都完全不同的东西b)控制哪个包运行?

我查看了类似命名的问题,但它们似乎处理继承重载而不是包导入

python python-import

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

Python 2.7无法从urllib.request中找到模块Request

当尝试Requesturllib.requestPython 2.7 导入时,它无法找到包.

>>> from urllib.request import Request
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named request
Run Code Online (Sandbox Code Playgroud)

python urllib python-import python-2.7

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

从另一个目录导入类

我有:

script1.py in database/table_inserts/  #trying to import below file into
dbcrud.py in database/                 #trying to import by above file
Run Code Online (Sandbox Code Playgroud)

script1.py我有:

from ..dbcrud import set_db_setting
Run Code Online (Sandbox Code Playgroud)

但这会引发错误:

   from ..dbcrud import set_db_setting
SystemError: Parent module '' not loaded, cannot perform relative import
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python import python-import

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

如何避免循环导入

我是 Python 新手,之前我一直在使用像 Swift 这样的语言,其中导入并不是什么大问题:您只是定义了一个新类,并且可以从程序的另一部分访问它。

我不能在 Python 中使用这种方式,因为这里 import 以另一种方式工作:您不能进行循环导入,其中两个文件相互导入。我知道我因为以错误的方式使用语言而面临这个问题,但我不明白如何避免它。

我的意思是,在大多数情况下,您可以通过将两个类合并到一个文件中来解决这个问题,但感觉不对。另外,我发现了诸如“将您的导入语句移动到文件末尾”之类的建议,但这也不是一个好主意。

如果您愿意,我想了解 Python 的哲学。在决定在一个单独的文件中创建一个类时,我应该如何组织我的项目以及我应该以什么为指导?

python python-import

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

Python是否在我的'from Bla import bla'语句中引用了相同的实例?

假设我有以下伪代码.bla两个文件中的导入是指引用2个实例Bla还是引用同一个实例?换句话说,我可以在Python中连接和断开不同文件中的单个连接吗?

bla.py

import socket
class Bla:
  connect(self):
    self.connection = socket.socket(...)
  disconnect(self):
    self.connection.close()
bla = Bla()
Run Code Online (Sandbox Code Playgroud)

hello.py

from bla import bla
bla.connect()
Run Code Online (Sandbox Code Playgroud)

world.py

from bla import bla
bla.disconnect()
Run Code Online (Sandbox Code Playgroud)

python python-module python-import

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

标签 统计

python ×10

python-import ×10

python-module ×3

import ×2

python-2.7 ×1

string ×1

urllib ×1