Pythonの現開発環境について
OS:windows8.1
Anaconda:4.10.1
VSCode:1.67.2
Python:3.8.5
VScodeは基本的にpythonのプログラミングに使っている
matplotlibはVScodeだと見ずらいので、
Anacondaでデータの可視化を検証したい時に使っている
今回は、Visual Studio Code上でAnacondaの仮想環境を使用してPythonをうごかす方法を
構築したいと思う
デフォルトではAnacondaのbaseと名前のついた環境に色んなパッケージがインストールされている
今回は、そのbase環境をコピーして
新たな環境をAnacondaの中に作りだす
作成した環境下でVSCodeが動作するように設定したい
まずAnacondaのPrompt上に、base環境をコピーして、新しく環境を作成するコマンドを入力する
一目でpythonのバージョン情報が分かるようにしたいので
py38という名前にする(これでpython3.8という環境であると分かる)
conda create -n py38 --clone base
10分以上経ってコマンドが実行された
確認のためAnaconda上の環境一覧を見るコマンドを入力し、ちゃんと環境が
出来ているか確認する
conda info -e
入力後、以下の通りになった
*は現在いる環境を示している
これで新しくbase環境をコピーしたpy38環境を作る事が出来た
Anaconda promptは最後まで使うのでまだ閉じないで使う
VSCodeのパス設定について
VSCodeの歯車マークをクリックして設定を選択
Pythonのパスを設定するので検索欄で
「pythonpath」と入力し
枠線で囲ったDefault Interpreter Pathがそれに該当する箇所
Interpreter Pathに
仮想環境構築した時に画面に乗っている
「C:Users\????/anaconda3\envs\py38」と入力した
????はユーザー名
Windows Powershellの設定
VSCodeではデフォルトのターミナルがWindows Powershellに
なっている為、このWindows PowershellでAnacondaを使えるように
設定する必要がある
Anacondaプロンプト画面でWindows Powershellを使えるようにするコマンドを入力する
入力出来たらWindows Powershellの設定も行う
Windows Powershellを管理者として実行して開き
以下のコマンドを入力し、実行する
Set-ExecutionPolicy RemoteSigned
コマンドを入力すると実行ポリシーを変更するか
聞かれるがyと入力し、実行し承諾する
これで
VSCodeのWindows PowerShellがAnacondaの環境を使うことができるように
基板作りチェックリストその25
今回はフッター部分を作成していく
これが成功すれば、ヘッダーとフッター部分を混合させたものを作り
ちゃんとしたリスト表が完成する
from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import A4, portrait from reportlab.lib.units import cm #特定のフォントを指定する為に from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.cidfonts import UnicodeCIDFont file_name = '基板作りチェックフッター部分描画テスト2.pdf' #ファイル名を設定 pdf = canvas.Canvas(file_name, pagesize=portrait(A4)) #pdfを生成、A4サイズ縦に設定 pdf.saveState() #セーブ #PDFのファイル情報を作成する pdf.setAuthor('python_checktest') #作成者情報 pdf.setTitle('フッター部分描画テスト2') #タイトル情報 pdf.setSubject('Footer_TEST2') #件名情報 #図形の描画 pdf.rect(1*cm, 15*cm, 19*cm, 2*cm) #長方形を描画する ### フォント、サイズを設定 ### pdfmetrics.registerFont(UnicodeCIDFont('HeiseiKakuGo-W5')) pdf.setFont('HeiseiKakuGo-W5', 14) ### 文字を描画 (左からの位置、下からの位置、入れたい文字列) pdf.drawString(2*cm, 16.5*cm, '分類名:___________基板 担当者確認年月日: 年 月 日') pdf.drawString(2*cm, 15.5*cm, 'ガーバーデータを外注時には作成日より日を空けて確認する事!!!') pdf.restoreState() pdf.save()
解説
文字を描画するにはフォントを指定する為にライブラリをインポートする
フッター部分は下から約16.5cmから15.5cmの範囲に描画した
上記のコードを実行する
以下の通りになった
次回は、フッターとヘッダー部分を混合したものを作り
それが出来れば、リストの本体部と組み合わせた本来チェックリストをPDF化
したものを作っていく
基板作りチェックリストその24
ヘッダー部分を描画するテストコード
from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import A4, portrait from reportlab.lib.units import cm #cm単位で座標を指定 #特定のフォントを指定する為に from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.cidfonts import UnicodeCIDFont file_name = '基板作りチェックヘッダー部分描画テスト2.pdf' #ファイル名を設定 pdf = canvas.Canvas(file_name, pagesize=portrait(A4)) #pdfを生成、A4サイズ縦に設定 pdf.saveState() #セーブ #PDFのファイル情報を作成する pdf.setAuthor('python_checktest2') #作成者情報 pdf.setTitle('ヘッダー部分描画テスト2') #タイトル情報 pdf.setSubject('TESTヘッダー2') #件名情報 ### フォント、サイズを設定 ### pdfmetrics.registerFont(UnicodeCIDFont('HeiseiKakuGo-W5')) pdf.setFont('HeiseiKakuGo-W5', 14) ### 文字を描画 (左からの位置、下からの位置、入れたい文字列) pdf.drawString(2.2*cm, 26*cm, '基板名:____________ リスト作成年月日: 年 月 日') #図形の描画 pdf.rect(2*cm, 25*cm, 17*cm, 2*cm) #長方形を描画する #保存 pdf.showPage() pdf.save()
長方形を描画するには、
rectメソッドを使う rect(float x, float y, float w, float h)というコードで表現可能
xは、長方形の左上の角のx座標 yは長方形の左上の角のy座標 wは長方形の幅 hは長方形の高さ
文字を描画する
ヘッダー部分に以下のような文字を描画する
「基板名:______ リスト作成年月日: 年 月 日」
解説
portraitは縦方向 reportlab.lib.unitsはcmでも出来るしmmでも設定可能
フォントを設定するには
#特定のフォントを指定する為に
from reportlab.pdfbase import pdfmetrics
from reportlab.pdfbase.cidfonts import UnicodeCIDFont
上記のライブラリをインポートした上で
### フォント、サイズを設定 ###
pdfmetrics.registerFont(UnicodeCIDFont('HeiseiKakuGo-W5'))
pdf.setFont('HeiseiKakuGo-W5', 14)
と書くと、フォントが決められる
上記のテストコードを実行すると以下のようになった
1回目はページ下部に正方形ができてしまった
2回目は上部に図形を描画出来た
3回目は希望通りに文字と図形を描画出来た
次回はフッター部分(A4下部の箇所)を作成する
基板作りチェックリストその23
日本語を含むpdfファイルを生成する
動作確認その1
A4縦のヘッダー部分に基板名とリスト作成年月日を描画する
ちなみにA4サイズは、縦が29.7cm 横が21.0cmとし
PDFファイル名は、基板作りチェックヘッダー部分描画テスト1.pdf
とする
文字の書き込みなどをする前に
最初に対象のPDFを生成する必要がある
from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import A4, portrait file_name = '基板作りチェックヘッダー部分描画テスト1.pdf' # ファイル名を設定 pdf = canvas.Canvas(file_name, pagesize=portrait(A4)) # PDFを生成、サイズはA4 pdf.saveState() # セーブ
上記のようにPDFサイズを指定したい場合は、setPageSizeメソッドを使う
次にPDFのファイル情報を設定する
これは、PDFのプロパティから確認出来る情報
pdf.setAuthor('python_checktest') # 作成者情報 pdf.setTitle('ヘッダー部分描画テスト1') #タイトル情報 pdf.setSubject('TEST1') #件名情報
文字を書き込む
次に生成したPDFに文字を書き込む方法は
rom reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.cidfonts import UnicodeCIDFont from reportlab.lib.units import cm ### フォント、サイズを設定 ### pdfmetrics.registerFont(UnicodeCIDFont('HeiseiKakuGo-W5')) pdf.setFont('HeiseiKakuGo-W5', 12) ### 文字を描画 ### pdf.drawString(1*cm, 26*cm, 'ヘッダー部分描画テスト1') pdf.setFont('HeiseiKakuGo-W5', 16) # フォントサイズの変更 width, height = A4 # A4用紙のサイズ pdf.drawCentredString(width / 2, height - 2*cm, 'テスト1')
ここでは文字の描画にdrawStringメソッドを使用しています。
drawString(左からの位置、下からの位置、文字列)
reportlabには日本語フォントとして、
「HeiseiMin-W3」と「 HeiseiKakuGo-W5」が用意されています。
線を描画する
線を描画する場合、まずは線の太さをsetLineWidthメソッドで指定する
setLineWidth(線の太さ)
次に線を描画するのにlineメソッドを使用します。
lineメソッドでは線のスタート位置(縦、横)と終了位置(縦、横)を
指定する必要があるので、4つの引数を指定します。
line(線のスタート位置縦、横、線の終了位置縦、横)
### 線の描画 ### pdf.setLineWidth(1) pdf.line(10*cm, 20*cm, 10*cm, 10*cm)
図形を描画する
図形を描画する場合、最初に色をsetFillColorRGBメソッドで指定します。
図形の描画が終了したら色を元に戻すことを忘れないように
### 図形の描画 ### pdf.setFillColorRGB(54, 54, 0) pdf.rect(1*cm, 1*cm, 4*cm, 4*cm, stroke=1, fill=1) #長方形を描画する pdf.setFillColorRGB(0, 0, 0)
長方形のほかにも色々な図形を描画するためのメソッドがある
次回は、実際にヘッダー部分を描画するテストコードを作成する
基板作りチェックリストその22
pythonのPDFライブラリ「ReportLab」を使ったpdfの生成の仕方
用紙サイズの指定は、reportlab.lib.pagesizesで定義されている
用紙サイズをCanvas作成に指定する。
デフォルトだとA4縦になっている
改ページにしたい場合は
showPageで、それまでにCanvasに対して行った操作を確定し、
ページを作成する。
saveを実行する事でPDFファイルの実体を作成可能になる
簡単な改ページのサンプルは以下
import os, sys rom reportlab.pdfgen import canvas from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont from reportlab.lib.pagesizes import A4, portrait fontname= "IPA Gothic" #フォントファイルを指定し、フォントを登録する pdfmetrics.registerFont(TTFont(fontname, './reportlab.zip/reportlab/fonts/ipag.ttf')) c = canvas.Canvas("hello.pdf") #1ページ目開始 c.setFont(fontname, 10) c.drawString(100, 700, u"1ページ") #1ページ目を確定 c.showPage() #2ページ目開始 c.setFont(fontname, 10) c.drawString(100, 700, u"2ページ") #2ページ目を確定 c.showPage() #pdfファイル生成 c.save() print "ok."
2ページ目を開始する時に
#2ページ目開始 c.setFont(fontname, 10)
としてフォントを再指定しているが、これで実行されてないと
そのページだけ文字化けを起こす
showPageを実行した後は、フォントを再指定する必要がある事が判明
次回は、日本語を含むpdfファイルを生成する
ワクチン接種3回目経過観察その1
寝る直前25日のAM1時頃くらいから体のだるさを感じる
翌26日の5時くらいに目が覚めて接種した幹部が痛み出す
14時に37度3分を観測 微熱でだるい
前回の接種では接種してから2時間後くらいから体のだるさを感じていたので
今回は、1日遅れで症状が出ているみたい
また何かあればブログにすると思う
16時ころ体がすげー熱いと思って体温測定すると
38度3分だった 久々に辛い
関節痛もする
17時に測定38度6分