标签: python-module

如何使用字符串[django]访问python模块变量

我有一个django应用程序,带有一个名为"app"的
模块现在这个模块有一个名为"urls.py"的文件,它有一个名为"HOME_URL " 的变量

我想做什么?

app_label = "app"
url = __import__(app_label).urls.HOME_URL
print url
Run Code Online (Sandbox Code Playgroud)

这显然不起作用,但我希望你得到我正在尝试做的事情,如果没有请评论我将编辑问题以包含更多信息.

python django python-module

9
推荐指数
2
解决办法
3566
查看次数

模块导入 Python 3.6 上的 ModuleNotFoundError 和 ImportError

我已经浏览并发现了很多问题和很多答案,但似乎没有任何问题。

我设置了两个文件config.pytest.py名为test一个文件夹下。

配置包括代码:

class Config:
    def __init__(self, name):
        self.name = name
Run Code Online (Sandbox Code Playgroud)

而测试有:

try:
    # Trying to find module in the parent package
    from . import config
    print(config.debug)
    del config
except ImportError:
    print('Relative import failed')

try:
    # Trying to find module on sys.path
    import config
    print(config.debug)
except ModuleNotFoundError:
    print('Absolute import failed')
Run Code Online (Sandbox Code Playgroud)

这已根据此堆栈答案的答案供应商汇总在一起。

不幸的是,我同时出现了两个错误,当我尝试直接调用它时,from config import Config我得到 ModuleNotFoundError

我真的对这个迷失了方向,不知道从哪里开始。

使用 Python 3.6,atom.io 作为我的 IDE。

python python-module python-3.x

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

Python - ModuleNotFoundError:没有命名模块

我是 Python 新手,在这个简单示例中出现以下错误:

这是我的项目结构:

python_project
.
??? lib
?   ??? __init__.py
?   ??? my_custom_lib.py
??? src
    ??? __init__.py
    ??? main.py
Run Code Online (Sandbox Code Playgroud)

这是我执行src/main.py文件时的错误:

?  python_project  python src/main.py

Traceback (most recent call last):
  File "src/main.py", line 3, in <module>
    from lib import my_custom_lib
ImportError: No module named lib
Run Code Online (Sandbox Code Playgroud)

如果我将main.py文件移动到根目录,然后再次执行此文件,则可以工作...但无法在src/目录中工作

这是我的main.py

from lib import my_custom_lib

def do_something(message):
        my_custom_lib.show(message)

do_something('Hello World!')
Run Code Online (Sandbox Code Playgroud)

注意:当我从Pycharm执行相同的代码时工作正常,但不能从我的终端执行。

python python-module init importerror

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

Python cx_Freeze名称__file__未定义

我有一个python脚本,它从互联网上获取图像,下载它,设置为桌面背景并在一分钟后更新.问题很可能是cx_Freeze不包括os模块,因为具有绝对路径的相同代码工作正常.我的代码也很完美,直到它冻结.它在我通过控制台加载,从IDLE运行或双击它之前冻结.每当我运行冻结文件时,我都会收到错误(如果我使用setup.py或cxfreeze file.py:

C:\Python33\Scripts>C:\Python33\Scripts\dist\desktopchanger.exe
Traceback (most recent call last):
  File "C:\Python33\lib\site-packages\cx_Freeze\initscripts\Console3.py", line 2
7, in <module>
    exec(code, m.__dict__)
  File "C:\Python33\desktopchanger.pyw", line 7, in <module>
    dir = path.dirname(__file__)
NameError: name '__file__' is not defined
Run Code Online (Sandbox Code Playgroud)

我的守则

import pythoncom
from urllib import request
from win32com.shell import shell, shellcon
from time import sleep
from os import path

dir = path.dirname(__file__) #get dierctory script is in
startpath = str(path.join(dir+'/bg/bg.jpg')) #add /bg/bg.jpg to path of script

pathtoimg=[]
for char in startpath:
    if char != "/": …
Run Code Online (Sandbox Code Playgroud)

python python-module setup.py cx-freeze self-reference

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

在 python 中将自定义模块与对象一起序列化

问题

假设我有这个模块名为custom_module

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

我在脚本中使用此类来序列化我在以下位置定义的类的对象custom_module

import cloudpickle
import custom_module as cm

custom_object = cm.CustomClass()
with open('filename.pkl', 'wb') as file:
    cloudpickle.dump(custom_object, file)
Run Code Online (Sandbox Code Playgroud)

我将此 pickle 文件复制到另一个环境并使用另一个脚本加载它:

import cloudpickle

with open('filename.pkl', 'rb') as file:
    custom_object = cloudpickle.load(file)
Run Code Online (Sandbox Code Playgroud)

这会产生这个错误:

Traceback (most recent call last):
  File "loader.py", line 4, in <module>
    custom_object = cloudpickle.load(file)
ModuleNotFoundError: No module named 'custom_module'
Run Code Online (Sandbox Code Playgroud)

尴尬的解决方案

作为解决方法,可以读取并执行custom_module脚本中的所有内容:

exec(open(path.join('custom_module.py')).read())
Run Code Online (Sandbox Code Playgroud)

但这看起来真的很奇怪,我不能使用 CustomClass 作为cm.CustomClass. 是否有其他解决方案不涉及将第一个环境中的所有代码复制到第二个环境中?

python serialization python-module pickle dill

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

我如何使用importlib.LazyLoader?

在我的模块中,我有几个依赖于具有较长启动时间的外部模块的功能.我该怎么用LazyLoader?如果我有

import veggies
Run Code Online (Sandbox Code Playgroud)

要么

import veggies.brussels.sprouts
Run Code Online (Sandbox Code Playgroud)

要么

from veggies.brussels import sprouts
Run Code Online (Sandbox Code Playgroud)

如何替换这些语句以便LazyLoader模块内容的执行被推迟到需要时?

从文档中可以立即明白如何使用它.没有示例,并且nullege代码搜索仅提供Python本身包含的单元测试.

python python-module python-import python-importlib

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

从父目录内的python模块导入到子目录内的jupyter笔记本文件

我有这样的文件结构:

project_folder/
     notebooks/
          notebook01.ipynb
          notebook02.ipynb
          ...
          notebookXY.ipynb
     module01.py
     module02.py
     module03.py
Run Code Online (Sandbox Code Playgroud)

.ipynb文件notebook/夹内的文件中,我想从module01.py, module02.py和导入类和函数module03.py

我在这个问题中找到了答案,可以在每个笔记本中使用以下代码行并每次将这些行作为第一个单元格运行:

import os
import sys
module_path = os.path.abspath(os.path.join('..'))
if module_path not in sys.path:
    sys.path.append(module_path)
Run Code Online (Sandbox Code Playgroud)

请问有更好的方法吗?如果.ipynb文件notebooks/夹中有很多文件,我是否必须在每个文件的开头粘贴这些代码行?有没有更好、更简约或更干净的方式?

python python-module python-import jupyter-notebook

8
推荐指数
2
解决办法
3855
查看次数

如何让pyttsx模块的声音变慢

我的代码:

import pyttsx3
import random

engine = pyttsx3.init()
words = ['hello', 'word']     
engine.say(random.choice(words)) #Say these words slower
Run Code Online (Sandbox Code Playgroud)

我不希望它变得非常慢,只是慢到足以让非母语人士轻松理解单词列表中的单词。另外,如果使用 pyttsx 模块无法做到这一点,您能否建议一个可以做到这一点的模块?

python python-module text-to-speech python-3.x pyttsx

8
推荐指数
2
解决办法
7418
查看次数

你如何递归地获取python包中的所有子模块?

问题

我有一个这样的文件夹结构:

- modules
    - root
        - abc
            hello.py
            __init__.py
        - xyz
            hi.py
            __init__.py
          blah.py
          __init__.py
      foo.py
      bar.py
      __init_.py
Run Code Online (Sandbox Code Playgroud)

这是字符串格式的相同内容:

"modules",
"modues/__init__.py",
"modules/foo.py",
"modules/bar.py",
"modules/root",
"modules/root/__init__.py",
"modules/root/blah,py",
"modules/root/abc",
"modules/root/abc/__init__.py",
"modules/root/abc/hello.py",
"modules/root/xyz",
"modules/root/xyz/__init__.py",
"modules/root/xyz/hi.py"
Run Code Online (Sandbox Code Playgroud)

我正在尝试以 python 导入样式格式打印出所有模块。一个示例输出是这样的:

modules.foo
modules.bar
modules.root.blah
modules.root.abc.hello
modules.root.xyz.hi
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 python 中轻松地做到这一点(如果可能的话,没有第三方库)?

我试过的

示例代码

- modules
    - root
        - abc
            hello.py
            __init__.py
        - xyz
            hi.py
            __init__.py
          blah.py
          __init__.py
      foo.py
      bar.py
      __init_.py
Run Code Online (Sandbox Code Playgroud)

但是,此代码只会打印出 'foo' 和 'bar'。但不是“root”,它是子包。我也无法弄清楚如何转换它以保留它的绝对导入样式。当前代码只获取包/模块名称,而不是实际的绝对导入。

python python-module python-3.x python-packaging

8
推荐指数
2
解决办法
4428
查看次数

如何在 VSCode 上安装新的 python 模块?

我正在尝试在我的计算机上安装新的 python 模块,我知道如何通过终端安装,但我想知道是否有办法直接通过 VSCode 安装新模块(就像在 PyCharm 上一样)?

我已经通过终端安装了,这不是问题,但是我想安装而无需在使用 VSCode 时打开终端。

python python-module python-3.x visual-studio-code vscode-settings

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