memoryfolder

メモです

はてな記法のメモ

はてな記法

python
>|python|

||<

import numpy as np

ターミナル出力
>|cterm|
||<

fatal error: file not found

Cのコードをpythonで使う

extensionというそうです
Can we use C code in Python? - Stack Overflow
1. Extending Python with C or C++ — Python 2.7.13 documentation

Machello worldをやろうとすると結構詰まったので以下回避策のメモ。
まず、チュートリアルに従ってhello.cppとMakefileを作りました。

hello.cpp

char const* greet()
{
   return "hello, world";
}
 
#include <boost/python.hpp>
 
BOOST_PYTHON_MODULE(hello_ext)
{
    using namespace boost::python;
    def("greet", greet);
}

Makefile

# location of the Python header files
 
PYTHON_VERSION = 2.7
PYTHON_INCLUDE = /usr/include/python$(PYTHON_VERSION)
 
# location of the Boost Python include files and library
 
BOOST_INC = /usr/include
BOOST_LIB = /usr/lib
 
# compile mesh classes
TARGET = hello_ext
 
$(TARGET).so: $(TARGET).o
	g++ -shared -Wl,--export-dynamic $(TARGET).o -L$(BOOST_LIB) -lboost_python-$(PYTHON_VERSION) -L/usr/lib/python$(PYTHON_VERSION)/config -lpython$(PYTHON_VERSION) -o $(TARGET).so
 
$(TARGET).o: $(TARGET).C
	g++ -I$(PYTHON_INCLUDE) -I$(BOOST_INC) -fPIC -c $(TARGET).C


これでmakeコマンドを打つも

hello.CPP:6:10: fatal error: 'boost/python.hpp' file not found

finderで探すとこれは僕の環境では/usr/local/includeにあったので、PYTHON_INCLUEをこのパスに変えることで回避。

/usr/local/include/boost/python/detail/wrap_python.hpp:50:11: fatal error: 'pyconfig.h' file not found

pyconfig.hを探すもなかなか見つからない。よくわからないところにあった。とりあえずPYTHON_INCLUDE2ということで指定。
/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/include/python2.7

次は

unknown option: --export-dynamic

このオプション、macではとりあえず消しとくといいらしい(ちゃんとした解決法もあるけど)。

そして

library not found for -lboost_python-2.7

これがわからない。ちょっとg++こまんどの勉強してきます

cythonでDLL load failed: %1は有効なwin32アプリケーションではありません が出る

pyxモジュールをまずpython setup.py build_ext --inplaceして、pyximportでインポートしている。

しかし

DLL load failed: %1は有効なwin32アプリケーションではありません
となりインポートできない…

すべてのモジュールを32bitにしたはずなのに!と思ったが、違うところに原因があった。
実は64bitのwindowspython setup.py build_ext --inplaceしていたんだった。

これを、ちゃんと32bitのwinで行うと実行できた。よかった。

cython(.pyx)とpython(.py)を同じパッケージで使いたいがcimportがinvalid syntaxになる

main.pyと他のモジュールが同じディレクトリにあり、main.pyで他のモジュールのクラスを継承して使っている。
モジュールの中で1つ計算が重いものがあったので、とりあえずそれをcythonにしてしまおうと思ったが案外詰まったのでメモ。
cimportしようとしてもmain.pyがpyファイルなせいか(cythonでないからか)、インポートできなかった。

かなり基礎的なことらしかった。
以下https://gist.github.com/ctokheim/6c34dc1d672afca0676aから引用させて頂く。下の方にpyximportを使えと書いてある!


gist.github.com

UltraVNCで画面は見えるものの操作しても動かない(しかしServer側でモニターを見ると動いている)

よくわからない症状が起きました。色々試したところ、ファイアウォールではなかった。

ログインはできてるし操作ができてるのでView-onlyになってるわけでもない。なぜだろう…。
とりあえずUltraVNCを再起動してみる。タスクバーから右クリック、Stop Serviceを選択。すると一瞬タスクバーからアイコンが消えて、(うわこれはアプリケーション落ちたか)と思ったらすぐに起動してアイコンが戻った。その後Start Serviceを選択するともとに戻る。そうすると何故か操作したとおりにclient側でも見えました(クリックしたらあたらしいウィンドウがちゃんと見えるだけでこんなに嬉しいなんて!)

大阪発屋久島旅行のコスト(2泊3日) - トータル29,400円

屋久島で宮之浦岳トレッキングか、縄文杉トレッキングをしようと思っています。
まず、屋久島まで。鹿児島港で一泊が必要です。

関西空港-鹿児島空港:往復13000円
LCCpeachのみ。オフシーズンだと平日休日たいだい往復13000円程度です。

鹿児島空港-鹿児島港:学生割引で往復6600円
屋久島までは鹿児島港からフェリーで行きます。安いのはフェリー屋久島2ですが、一日一本づつしかない。
調べた時(2017年5月時点)は
鹿児島発 宮之浦着
8:30 12:30
宮之浦発 鹿児島着
13:30 17:40
のみでした。なので鹿児島港あたりで一泊の必要があります。

・鹿児島港泊:1800円
ドミトリー部屋でじゃらんで探したら1800円くらいのもありました。

屋久島泊:3000円
ドミトリー部屋で3000円のところがあります。

屋久島内移動:5000円?
日帰りで縄文杉トレッキングするにはタクシーが必要らしい。
バスを利用するにしても片道850円など結構かかるそうです。
体力を考慮して決めてください。


合計:29,400円 の予定。もっとかかるかも。

pyVISAでオシロスコープを操作する

pyVISAを使います。NI-VISAをダウンロードする必要があるかも。
class oscillo():
def __init__(self):
#setup oscillo
self.rm=visa.ResourceManager()
self.oscillo = self.rm.list_resources()[0]
self.osc = self.rm.get_instrument(self.oscillo)
print(self.osc.ask("*IDN?"))
self.osc.write("CH1:SCALE 1E0")
self.osc.write("HORIZONTAL:MAIN:SCALE 2E-3")
# make the measurement
print self.readoscillo()

def readoscillo(self):
time.sleep(1.4)
return self.osc.query_ascii_values('measurement:meas1:value?')[0]

3300を使うとなぜか1.4秒ごとにreadしないと値がおかしくなってしまいました