相关疑难解决方法(0)

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

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

python configuration python-module python-import

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

如何在Python中获取当前文件目录的完整路径?

我想获取当前文件的目录路径.
我试过了:

>>> os.path.abspath(__file__)
'C:\\python27\\test.py'
Run Code Online (Sandbox Code Playgroud)

但是如何检索目录的路径?例如:

'C:\\python27\\'
Run Code Online (Sandbox Code Playgroud)

python directory

677
推荐指数
9
解决办法
101万
查看次数

什么是Python中的__future__,以及如何/何时使用它,以及它是如何工作的

包括我在内的人都知道Python中有一些东西叫它__future__,它出现在我读过的很多模块中.像我这样沉闷的人不知道它为什么存在,以及如何/何时使用它,即使在阅读了Python的__future__文档之后.

那么用示例来解释一下吗?

在基本用法方面,我快速得到了一些答案,看起来都是正确的.

但是,为了进一步了解如何__future__工作:

当我试图理解它时,我刚刚意识到一个让我感到困惑的关键事情,那就是当前的python版本如何包含将在未来版本中发布的内容?如何在当前的python版本中成功编译未来python版本中使用新功能的程序?

所以,我想现在,当前版本已经打​​包了一些潜在的功能,将包含在未来的版本中 - 这是对的吗?但这些功能只能通过__future__,因为它还没有成为标准 - 我是对的吗?

python python-2.x

633
推荐指数
6
解决办法
26万
查看次数

Python中的相对导入3

我想从同一目录中的另一个文件导入一个函数.

有时它适用于我,from .mymodule import myfunction但有时我会得到:

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

有时它适用from mymodule import myfunction,但有时我也得到:

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

我不明白这里的逻辑,我找不到任何解释.这看起来完全随机.

有人可以向我解释这一切背后的逻辑是什么吗?

python python-import python-3.x

589
推荐指数
16
解决办法
38万
查看次数

从脚本导入已安装的包会引发"AttributeError:module has no attribute"或"ImportError:无法导入名称"

我有一个名为的脚本requests.py导入请求包.该脚本无法访问包中的属性,也无法导入它们.为什么这不起作用,我该如何解决?

以下代码提出了一个问题AttributeError.

import requests

res = requests.get('http://www.google.ca')
print(res)
Run Code Online (Sandbox Code Playgroud)
Traceback (most recent call last):
  File "/Users/me/dev/rough/requests.py", line 1, in <module>
    import requests
  File "/Users/me/dev/rough/requests.py", line 3, in <module>
    requests.get('http://www.google.ca')
AttributeError: module 'requests' has no attribute 'get'
Run Code Online (Sandbox Code Playgroud)

以下代码提出了一个问题ImportError.

from requests import get

res = get('http://www.google.ca')
print(res)
Run Code Online (Sandbox Code Playgroud)
Traceback (most recent call last):
  File "requests.py", line 1, in <module>
    from requests import get
  File "/Users/me/dev/rough/requests.py", line 1, in <module>
    from requests import get
ImportError: cannot import name 'get' …
Run Code Online (Sandbox Code Playgroud)

python exception python-module shadowing

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

23
推荐指数
3
解决办法
2万
查看次数

如果从源目录导入,则捕获python'ImportError'

当一个foo人在源目录中尝试导入模块时,会得到一个相当混乱的ImportError消息:ImportError: No module named foo.

如何轻松捕获此案例并返回更多信息,例如"请不要从源目录加载模块foo"?

有了__init__.py,我会开始:

try:
    from _foo import *
except ImportError:
    ## check whether in the source directory...
Run Code Online (Sandbox Code Playgroud)

所以我想区分a的不同原因ImportError(例如,因为一个名为的模块foo根本没有安装),并检测它setup.py位于当前目录中的情况.这样做的优雅方式是什么?

python exception-handling importerror

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

具有相同名称的Python模块(即,在包中重用标准模块名称)

假设我有一个包含模块的包:

SWS/
  __init.py__
  foo.py
  bar.py
  time.py
Run Code Online (Sandbox Code Playgroud)

并且模块需要引用彼此包含的功能.似乎我遇到了time.py模块问题,因为有一个标准模块同名.

例如,在我的foo.py模块需要我SWS.time和标准python time 模块的情况下,我遇到麻烦,因为解释器将查看包内部并time.py在它遇到标准time模块之前找到我的模块.

有没有办法解决?这是禁止的情况,模块名称是否应该重复使用?

关于包装哲学的任何解决方案和意见在这里都很有用.

python namespaces module package

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

当存在具有相同名称的本地模块时,如何在Python中访问标准库模块?

当文件prog.py与具有相同名称的本地模块(math.py)放在同一目录中时,如何访问标准库模块(比如数学)?

我问这个问题,因为我想创建uncertainties一个可以用作的包

import uncertainties
from uncertainties.math import *
Run Code Online (Sandbox Code Playgroud)

因此,不确定性目录中有一个本地数学模块.问题是我想从不确定性/ __ init__.py访问标准库数学模块.

我不想重命名不确定性.因为这个模块正是用于替换数学模块中的函数(具有处理数值不确定性的等价物).

PS:这个问题与我为执行不确定性计算而编写的模块有关,同时考虑了变量之间的相关性.

python import module standard-library

15
推荐指数
2
解决办法
5647
查看次数

为什么将Python系统类与自定义类合并比挂钩导入机制更不可取?

我正在开发一个旨在通过部分订购信息扩充Python套接字消息的项目.我正在构建的库是用Python编写的,需要插入通过套接字函数发送的现有系统的消息.

我已经阅读了一些资源,即@Omnifarious在这个问题上的答案python- imports -from-builtin-library-when-module-with-name-name-exist

你可以做一件非常丑陋和可怕的事情,不涉及钩住进口机制.这是你可能不应该做的事情,但它可能会奏效.它将您的日历模块变为系统日历模块和日历模块的混合体.

我已经实现了导入机制解决方案,但我们已经决定这不是我们想要采取的方向,因为它过分依赖于环境.在我的情况下,将类合并为混合而不是依赖导入机制的解决方案似乎是最好的方法.

为什么混合动力被称为丑陋而可怕的解决方案?我想在我的项目中开始实现它,但我对这些警告很谨慎.它似乎有点hackish,但由于它将成为安装脚本的一部分,运行此一次不是没有问题吗?

这是一个代码片段,其中插入需要在发送之前拦截套接字消息:

class vector_clock:

  def __init__(self):
   """
   Initiate the clock with the object
   """
   self.clock = [0,0]

  def sendMessage(self):
   """
   Send Message to the server
   """
   self.msg = "This is the test message to that will be interposed on"
   self.vector_clock.increment(0) # We are clock position 0

   # Some extraneous formatting details removed for brevity….
   # connectAndSend needs interpositioning to include the vector clock

   self.client.connectAndSend(totalMsg);
   self.client.s.close()
Run Code Online (Sandbox Code Playgroud)

python sockets networking distributed-system

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