目前我正在开发一个包含子模块并使用numpy/scipy的python项目.Ipython用作交互式控制台.不幸的是,我对我现在使用的工作流程不是很满意,我将不胜感激.
在IPython中,框架由一个简单的import命令加载.但是,通常需要更改框架的一个子模块中的代码.此时已经加载了一个模型,我使用IPython与它进行交互.
现在,框架包含许多相互依赖的模块,即在最初加载框架时,主模块正在导入和配置子模块.只有在使用重新加载模块时才会执行对代码的更改reload(main_mod.sub_mod).这很麻烦,因为我需要使用完整路径单独重新加载所有已更改的模块.如果reload(main_module)还要重新加载所有子模块,但没有重新加载numpy/scipy 将是非常方便的..
我正在尝试使用运行Debian的Raspberry Pi上的Python 2.6访问串口.我的脚本命名serial.py尝试导入pySerial:
import serial
ser = serial.Serial('/dev/ttyAMA0', 9600)
ser.write("hello world!")
Run Code Online (Sandbox Code Playgroud)
由于某种原因,它拒绝与此错误建立串行连接:
AttributeError: 'module' object has no attribute 'Serial'
Run Code Online (Sandbox Code Playgroud)
当我尝试在交互式Python解释器中键入相同的代码时,它仍然无法正常工作.
奇怪的是,它曾经在几个小时前工作.
可能是什么问题呢?我试图修复一段时间,再次安装pySerial,重写我的代码,仔细检查串口等.
提前致谢!
我正在编写一个脚本,尝试在Python 2.6中将字节编码为许多不同的编码.有没有办法获得可以迭代的可用编码列表?
我试图这样做的原因是因为用户有一些未正确编码的文本.有趣的人物.我知道unicode角色搞砸了.我希望能够给他们一个答案,例如"你的文本编辑器将该字符串解释为X编码,而不是Y编码".我以为我会尝试使用一种编码对该字符进行编码,然后使用另一种编码再次对其进行解码,看看我们是否得到相同的字符序列.
即是这样的:
for encoding1, encoding2 in itertools.permutation(encodinglist(), 2):
try:
unicode_string = my_unicode_character.encode(encoding1).decode(encoding2)
except:
pass
Run Code Online (Sandbox Code Playgroud) 我从来没有注意到__path__今天之前在我的某些软件包上定义的属性.根据文件:
包支持另一个特殊属性
__path__.这被初始化为一个列表,其中包含在__init__.py执行该文件中的代码之前保存包的目录的名称.这个变量可以修改; 这样做会影响将来对包中包含的模块和子包的搜索.虽然通常不需要此功能,但它可用于扩展程序包中的模块集.
有人可以向我解释这究竟是什么意思以及为什么我会想要使用它?
如何获取已导入的 Python 模块的所有子模块的名称/列表?(不是外部导入的模块/包,只是与模块子文件夹位于同一文件夹中的那个)。
我在用
import inspect
print([o[0] for o in inspect.getmembers(module_imported) if inspect.ismodule(o[1])])
Run Code Online (Sandbox Code Playgroud)
但这也会打印导入的系统模块和主模块文件夹中的文件。
I have looked around and do not see a solution for this. What I would like to do is get a list of all packages available in Python at run-time.
I looked at these:
But they are not what I am looking for.
I attempted to do this:
import pkgutil
for pkg in pkgutil.walk_packages():
print(pkg) # or …Run Code Online (Sandbox Code Playgroud) 我通过Anaconda 2.1.0发行版使用scipy和numpy.我使用Spyder作为我的Python IDE.
当我运行时 import scipy as sp,我无法访问子包,例如optimize,linalg,cluster等sp.
但是,当我运行时import numpy as np,我能够访问其所有子包,例如linalg,random,matrixlib,polynomial,testing等np.
这两种进口是否有不同的原因?为什么不import scipy as sp抓住所有scipy子包进入sp命名空间?
我希望rasterio使用pyinstaller. 该脚本在我的 python 环境中运行良好。但是我无法使用PyInstaller.
我有一个名为的脚本workflow_3.py,其中包含以下内容:
import rasterio
就是这样。我尝试编译然后使用 pyinstaller 运行它,如下所示:
(wps_env36) D:\11202750-002_RA2CE\Basis>pyinstaller workflow_3.py
(wps_env36) D:\11202750-002_RA2CE\Basis>dist\workflow_3\workflow_3.exe
编译似乎运行完成,但是当我运行可执行文件时,出现以下错误:
(wps_env36) D:\11202750-002_RA2CE\Basis>dist\workflow_3\workflow_3.exe
Traceback (most recent call last):
File "workflow_3.py", line 1, in <module>
import rasterio
File "c:\programdata\anaconda2\envs\wps_env36\lib\site-packages\PyInstaller\loader\pyimod03_i
mporters.py", line 627, in exec_module
exec(bytecode, module.__dict__)
File "site-packages\rasterio\__init__.py", line 23, in <module>
File "rasterio\_base.pyx", line 1, in init rasterio._base
ModuleNotFoundError: No module named 'rasterio._shim'
[17536] Failed to execute script workflow_3
Run Code Online (Sandbox Code Playgroud)
我通过显式添加'rasterio._shim'到hidden-imports变量包含的列表来修改规范文件。然后我跑了 …
python ×9
module ×2
encoding ×1
import ×1
ipython ×1
numpy ×1
package ×1
path ×1
pyinstaller ×1
raspberry-pi ×1
rasterio ×1
scipy ×1
serial-port ×1
subclass ×1
unicode ×1