尝试在Python 3.2.3上导入python-mysql.connector并收到一个奇怪的堆栈。我怀疑我的 ubuntu 12.04 安装配置不正确。
vfi@ubuntu:/usr/share/pyshared$ python3
Python 3.2.3(默认,2013 年 9 月 25 日,18:22:43)
[GCC 4.6.3] 在 linux2 上
输入“帮助”、“版权”、“信用”或“许可”以获取更多信息。
>>> 导入 mysql.connector
回溯(最近一次调用最后一次):
文件“”,第 1 行,在
导入错误:没有名为 mysql.connector 的模块
sys.excepthook 中的错误:
回溯(最近一次调用最后一次):
文件“/usr/share/pyshared/apport_python_hook.py”,第 66 行,在 apport_excepthook
从 apport.fileutils 导入可能_打包,get_recent_crashes
文件“apport/__init__.py”,第 1 行,在
从 appport.report 导入报告
文件“apport/report.py”,第 20 行,在
导入 appport.fileutils
文件“apport/fileutils.py”,第 22 行,在
从 apport.packaging_impl 导入 impl 作为包装
文件“apport/packaging_impl.py”,第 20 行,在
导入 apt
文件“apt/__init__.py”,第 24 行,在
从 apt.package 导入包
文件“apt/package.py”,第 1051 行
返回 file_list.read().decode("utf-8").split(u"\n")
^ … 假设我有几个简单的模型位于food.py:
import peewee as pw
db = pw.SqliteDatabase('food.db')
class BaseModel(pw.Model):
class Meta:
database = db
class Taco(BaseModel):
has_cheese = pw.BooleanField()
class Spaghetti(BaseModel):
has_meatballs = pw.BooleanField()
db.connect()
# populate with some data if table doesn't exist
from random import random
if not Taco.table_exists():
db.create_table(Taco)
for _ in range(10):
Taco.create( has_cheese = (random() < 0.5) )
db.commit()
if not Spaghetti.table_exists():
db.create_table(Spaghetti)
for _ in range(10):
Spaghetti.create( has_meatballs = (random() < 0.5) )
db.commit()
Run Code Online (Sandbox Code Playgroud)
后来,我有了food.py和food.db。但是假设Taco和 …
一些上下文:我正在尝试创建一个模块,该模块可以安全地将其自身和所有其他所需文件复制到另一个位置。
假设我有两个模块。
a.py:
import b
import os
import tkinter
print(str(__file__))
print(str(b.getfile()))
Run Code Online (Sandbox Code Playgroud)
b.py:
def getfile:
return __file__
Run Code Online (Sandbox Code Playgroud)
当 a.py 将输出时
C:/path/to/code/a.py
C:\path\to\code\b.py
Run Code Online (Sandbox Code Playgroud)
问题:如果有的话,我如何获取不同导入模块(如“os.py”)或任何没有此getfile()功能的模块的路径?
我几乎搜索了整个网络(打个比方来说),试图找到一种在 Mac 上通过 Python 使用蓝牙的方法。PyBluez 不兼容,Lightblue 没有得到维护(无论如何尝试),安装了 PyObC 框架(包括蓝牙框架),并在我的 MacOS 10.10.5 的 2.7.6 和 3.6.1 环境中进行了尝试。
我经常遇到类似以下的错误:
Traceback (most recent call last):
File "/Users/***/PycharmProjects/Bluey/main.py", line 1, in <module>
import bluetooth
File "build/bdist.macosx-10.10-intel/egg/bluetooth/__init__.py", line 47, in <module>
File "build/bdist.macosx-10.10-intel/egg/bluetooth/osx.py", line 1, in <module>
File "build/bdist.macosx-10.10-intel/egg/lightblue/__init__.py", line 160, in <module>
File "build/bdist.macosx-10.10-intel/egg/lightblue/_lightblue.py", line 31, in <module>
File "build/bdist.macosx-10.10-intel/egg/lightblue/_macutil.py", line 169, in <module>
objc.BadPrototypeError: Objective-C expects 1 arguments, Python argument has 2 arguments for <unbound selector sleep of BBCocoaSleeper at 0x103cdc030>
Process finished …Run Code Online (Sandbox Code Playgroud) 我尝试在我的 Ubuntu 服务器上运行一个 python3 脚本,通知有关 twitter 帖子的信息。在命令行中执行此操作工作正常,但是当我在关闭控制台后使用 pm2 使脚本保持在线时,我收到此错误:
Traceback (most recent call last):
File "/root/projects/Twitterbot/main.py", line 1, in <module>
from tweepy.streaming import StreamListener
ImportError: No module named tweepy.streaming
Run Code Online (Sandbox Code Playgroud)
当我将解释器从没有发生任何事情切换时python,python3它不会崩溃。它需要一些内存,但它似乎没有做任何事情。
有人知道可能是什么问题吗?另一个 Python 脚本(导入了很多东西)运行良好,没有任何问题。
我已经使用 pip 重新安装了 tweepy 但没有任何变化
我想知道我们是否可以使用“ import as”来创建相对紧凑或可读的代码。我知道它基于PEP 的常见用例,例如避免名称冲突。
情况如下(出于演示目的,保持非常简单)。假设我有一个模块名称 process_words.py。
process_words.py:
def word_to_lower(word):
return word.lower
Run Code Online (Sandbox Code Playgroud)
process_article.py(让主脚本):
import process_words
word = "HELLO"
word_lower = process_words.word_to_lower(word)
print(word_lower)
Run Code Online (Sandbox Code Playgroud)
现在做这样的事情是坏还是好?:
import process_words as pw
word = "HELLO"
word_lower = pw.word_to_lower(word)
print(word_lower)
Run Code Online (Sandbox Code Playgroud)
这是一个非常简单的例子。我有几个模块,每个模块都有几个功能。导入每个函数from module import something并不是一种选择。对我来说,感觉如果我将 import as 与某些快捷方式名称一起使用,它将提高代码的可读性。有什么想法吗?
注意:我在这里指的是自定义模块。
语言版本:Python 3.6.3
IDE 版本:PyCharm 2017.2.3
我试图解析一个天气网站来打印某个地方的天气。当我学习Python时,之前我使用过urllib.request.urlopen(url).read()并且它有效。现在,我正在修改BeautifulSoup4和requests模块的代码。下面是我的代码:
from bs4 import *
import requests
url = "https://www.accuweather.com/en/in/dhenkanal/189844/weather-forecast/189844"
data = requests.get(url)
soup = BeautifulSoup(data.text, "html.parser")
print(soup.find('div', {'class': 'info'}))
Run Code Online (Sandbox Code Playgroud)
但每次我尝试运行代码时都会出现以下错误:
Traceback (most recent call last):
File "C:\Users\Nrusingh\AppData\Local\Programs\Python\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 601, in urlopen
chunked=chunked)
File "C:\Users\Nrusingh\AppData\Local\Programs\Python\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 387, in _make_request
six.raise_from(e, None)
File "", line 2, in raise_from
File "C:\Users\Nrusingh\AppData\Local\Programs\Python\Python36-32\lib\site-packages\urllib3\connectionpool.py", line 383, in _make_request
httplib_response = conn.getresponse()
File "C:\Users\Nrusingh\AppData\Local\Programs\Python\Python36-32\lib\http\client.py", line 1331, in getresponse
response.begin()
File "C:\Users\Nrusingh\AppData\Local\Programs\Python\Python36-32\lib\http\client.py", line 297, in begin …Run Code Online (Sandbox Code Playgroud) 我试图在我的 Windows 机器上下载一些模块,通过 FTP 将它们传输到离线 Linux 服务器,其中安装了 Python 3 和 pip。然后使用 pip 在那里安装模块。
pip download --platform linux_x86_64 --only-binary=:all: --no-binary=:none: pandas
Run Code Online (Sandbox Code Playgroud)
给出错误:
Could not find a version that satisfies the requirement pandas (from versions: )
No matching distribution found for pandas
Run Code Online (Sandbox Code Playgroud)
我可以使用以下命令下载,但它是 Windows 版本
pip download pandas
Run Code Online (Sandbox Code Playgroud) 我正在编写一个依赖于特定模块的python程序rtmidi, . 事实是,PyPI 中至少有两个不同的包有一个具有该名称的模块:rtmidi和python-rtmidi。它们提供几乎相同的功能,但具有不同的语法。
当仅安装“正确”的软件包时,一切正常。但是,如果安装了这两个软件包,则使用import rtmidi会加载“错误”的模块,并且我的程序会崩溃。让它再次工作的唯一方法是卸载这两个软件包,然后重新安装正确的软件包。当然,由于用户可能依赖其他模块来执行其他程序,因此我不能指望他们这样做。
尝试识别模块会rtmidi.__name__给出与两个包相同的结果。
所以我的问题是,我该如何解决这个名称冲突问题?有没有最佳实践方法来处理这个问题?
当我使用 Jupyter Lab 处理笔记本时,我经常将代码放入本地文件夹中,以便可以在其他笔记本中重用该代码。我通常通过执行以下操作来引用该本地模块。
\nimport os\nimport sys\n\nsys.path.insert(0, os.path.abspath('.'))\nRun Code Online (Sandbox Code Playgroud)\n因此,如果我发现错误或需要增强代码并修改文件*.py,我无法通过简单地重新运行单元来加载新代码。我必须重新启动新内核才能获得新的更改。这个开发周期非常糟糕,尤其是当笔记本电脑的某些部分运行起来计算成本很高时。
有没有关于如何与 Juypter Lab 笔记本一起更有效地编码和修改模块代码的提示?
\n我的代码结构如下所示。
\n\ntemp/\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 lib\n\xe2\x94\x82\xc2\xa0\xc2\xa0\xe2\x94\x9c\xe2\x94 \x80\xe2\x94\x80 __init__.py\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 杂项.py\n \xe2\x94\x82\xc2\xa0\xc2\xa0\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 utils.py\n\xe2\x94\x94\xe2\x94\x80\ xe2\x94\x80 笔记本.ipynb\n\n
有misc.py以下代码。
def say_hi(name):\n print(f'hi {name}')\nRun Code Online (Sandbox Code Playgroud)\n有utils.py以下代码。
def say_bye(name):\n print(f'bye bye {name}')\nRun Code Online (Sandbox Code Playgroud)\n然后,我在单元格中导入一个函数,如下所示。
\nfrom lib.utils import say_bye\n\nsay_bye('john')\nRun Code Online (Sandbox Code Playgroud)\n现在假设我改变了say_bye(),如何重新加载模块?
python-module ×10
python ×9
python-3.x ×3
pip ×2
bluetooth ×1
macos ×1
mysql ×1
peewee ×1
pep8 ×1
pm2 ×1
pypi ×1
python-3.6 ×1