相关疑难解决方法(0)

如何解决Python中的模块名称冲突?

我有一个名为 websocket 的模块。对于这个模块,我想要一些测试,并且对于这些测试,我pip install需要适当的模块。问题是安装的模块与我自己的模块具有完全相同的名称。

项目结构

websocket-server
       |
       |---- websocket.py
       |
       '---- tests
               |
               '---- test.py
Run Code Online (Sandbox Code Playgroud)

测试.py

from websocket import WebSocketsServer  # my module
from websocket import create_connection # installed module
Run Code Online (Sandbox Code Playgroud)

有没有办法解决这个问题:

  • 无需重命名我的模块 ( websocket.py)
  • 不会让我的项目变得丑陋__init__()
  • 需要同时在 Python3 和 2 上运行

python name-collision

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

带有 .py 文件的配置文件

有人告诉我,这样做并不是一个很好的做法(尽管它存在于Python 模式的主要答案中,用于在整个应用程序中共享配置):

配置文件.py

SOUNDENABLED = 1
FILEPATH = 'D:\\TEMP\\hello.txt'
Run Code Online (Sandbox Code Playgroud)

主要.py

import configfile

if configfile.SOUNDENABLED == 1:
    ....

f = open(configfile.FILEPATH, 'a')
...
Run Code Online (Sandbox Code Playgroud)

许多人使用 INI 文件通过ConfigParser模块或iniparse或其他类似模块进行本地配置这一事实证实了这一点。

configfile.py问题:为什么使用 INI 文件进行本地配置 + INI 解析器 Python 模块比仅导入包含正确配置值作为常量的文件更好?

python ini parsing configuration-files

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

如何从Python中的不同文件夹导入所有文件

__init__.py在目录中,我能够将其导入

from subdirectory.file import *
Run Code Online (Sandbox Code Playgroud)

但我希望导入该子目录中的每个文件;所以我试过了

from subdirectory.* import *
Run Code Online (Sandbox Code Playgroud)

这不起作用。有什么建议?

python python-import importerror

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

将变量注入导入命名空间

为了说明我正在尝试做什么,假设我有一个testmod位于./testmod.py. 这个模块的全部内容是

x = test
Run Code Online (Sandbox Code Playgroud)

我希望能够使用任何可用的工具importlib或任何其他内置库成功地将此模块导入 Python 。

显然import testmod从当前目录做一个简单的语句会导致错误:NameError: name 'test' is not defined.

我想,也许无论是传球globals还是locals__import__正确地将修改剧本正在运行的内部环境,但事实并非如此:

>>> testmod = __import__('testmod', globals={'test': 'globals'}, locals={'test': 'locals'})
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/jfoxrabi/testmod.py", line 1, in <module>
    x = test
NameError: name 'test' is not defined
Run Code Online (Sandbox Code Playgroud)

我以不同的方式设置了 test 的值,这样我就可以看到testmod.x如果这行得通,我可以看到哪个 dict来自。

由于这些似乎都不起作用,我被卡住了。甚至有可能完成我想要做的事情吗?我猜是的,因为这是 Python,而不是 Sparta。

我在 Anaconda 上使用 …

python-import python-3.x

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

在Python中包含外部文件

我正在编写一个运行一些模拟的Python脚本,但它需要很多输入参数(大约20个).所以我想把所有模拟参数都包含在外部文件中.这样做最简单的方法是什么?

我发现的一个答案是Stack Overflow问题如何在给定完整路径的情况下导入模块?,将所有模拟参数放在parm.py文件中,并使用imp包导入该模块.

这将允许运行此脚本的用户提供任何文件作为输入.如果我以这种方式导入模块:

parm = imp.load_source('parm', '/path/to/parm.py')
Run Code Online (Sandbox Code Playgroud)

那么所有参数都必须被引用为

parm.p1, parm.p2
Run Code Online (Sandbox Code Playgroud)

但是,我想在我的脚本中将它们称为p1,p2等.有没有办法做到这一点?

python import python-module

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

firebase云函数内的模块与python:ModuleNotFoundError:没有名为“src”的模块

我有一个这样的目录结构:

python-functions/
--src
---- | api/
-------- | __init__.py
-------- | main.py
---- | __init__.py
---- | main.py
Run Code Online (Sandbox Code Playgroud)

我试图在 src/main.py 中定义所有函数,但在其相应的文件夹中有实现

python-functions/
--src
---- | api/
-------- | __init__.py
-------- | main.py
---- | __init__.py
---- | main.py
Run Code Online (Sandbox Code Playgroud)
# src/main.py
import src.api.main as api

@https_fn.on_request(timeout_sec=300)
def status(req: https_fn.Request) -> https_fn.Response:
    return api.status(req)
Run Code Online (Sandbox Code Playgroud)

但是在部署时我收到此错误:

# Importing like: import src
ModuleNotFoundError: No module named 'src'
127.0.0.1 - - [18/May/2023 00:09:43] "GET /\_\_/functions.yaml HTTP/1.1" 500 -
Error: Failed to parse build specification:

- …
Run Code Online (Sandbox Code Playgroud)

python firebase google-cloud-platform firebase-tools google-cloud-functions

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

在python脚本中调用python脚本

我试图在另一个python脚本中调用python脚本.目录是不同的.我试过了

import subprocess
subprocess.call("C:\temp\hello2.py", shell=True)
Run Code Online (Sandbox Code Playgroud)

但什么也没得到.这是行不通的.我回顾了很多论坛,但是当两个脚本都在同一个目录上时,它们都是关于调用它的.

我尝试在同一目录中同时使用这两个脚本.在这种情况下,我可以在Python.exe(通过cmd窗口)中运行模型,但不能在IDLE中运行.在IDLE中,我甚至没有收到错误消息.

我真的需要这样做,这样我就无法将其他脚本定义为不同的模块等.我需要在另一个脚本中调用脚本.

python subprocess call

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

通过另一个 python 脚本从 python 文件中检索变量值的最佳方法?

我有许多 python 文件,它们都具有相同的变量名但值不同。像这样的东西将合二为一:

var_one = 'happy'
var_two = '2345'
var_three = '-24.24'
var_four = 'Chocolate'
Run Code Online (Sandbox Code Playgroud)

我需要编写一个可以读取这些文件的 Python 脚本,当我要求var_one它返回happy. 如果我要求var_two它返回2345等等。

现在我有一个 python 两个兼容的工具箱,它使用以下内容执行此操作:

for fname in myfile:
    d = toolbox.datafile(fname)
    my_mood = d['var_one']
    number  = d['var_two']
    decimal = d['var_three']
    candy   = d['var_four']
Run Code Online (Sandbox Code Playgroud)

然后打印my_mood将打印出来happy

但是,这个工具箱不符合 python 3,我没有制作它,所以我想知道是否有一个简单的内置工具箱可以完成这个任务。

提前致谢

编辑**

导入方法似乎对回答这个问题最有帮助。我现在唯一的问题是我不知道如何导入文件。

为了进一步解释,我将解析命令行参数,其中一个参数是我们要导入的所述文件的位置。导入它的语法是什么?

我有一个args.file等于<home/myname/python/myfile.py>

那么我将如何导入args.file

python python-3.x

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