Pythonのお勉強 Part63
■ このスレッドは過去ログ倉庫に格納されています
!extend:default:vvvvv:1000:1024
!extend:default:vvvvv:1000:1024
↑スレ立てる毎に減るので、減ってたら3つに増やすこと。
★当スレにRubyのソースコード類を書くことを禁ず★
☆Ruby等、Pythonではないプログラミング言語での回答類・質問を書くのも禁止
☆「Ruby では」「Rubyでは」をNGワード登録推奨
★エラーを解決したいときはエラー文(勝手に省略禁止、スクショうp等の横着も禁止)と
環境(Pythonのバージョン+OS名IDE名と夫々のバージョン)をシッカリ書くこと
◆Pythonのソースコードを5ちゃんにコピペするとインデントが崩壊するので
↓等のソースコードうp用サイトに貼ってきてくだしあ
(スクリーンショットをimgur等にうpる「横着」禁止)
ttp://ideone.com/ デフォ設定がCなので、Pythonするには言語種選択ボタン押下がピコ手間かも。
ttp://codepad.org/ ほぼ直感的に使える。Run codeボタンあり。
ttp://pastebin.com/ まずまずシンプル。
ttp://dpaste.com/ とてもシンプル。消えるまでの日数は十分長ーく指定のこと。
◇Pythonオフィシャルサイト http://www.python.org/
◇まとめwiki ttp://python.rdy.jp/
●関連スレ●
くだすれPython(超初心者用) その46【Ruby禁止】
http://mevius.5ch.net/test/read.cgi/tech/1577948214/
〇前スレ
Pythonのお勉強 Part62
http://mevius.5ch.net/test/read.cgi/tech/1568531160/
次スレの建立は>>985あたりが挑戦する。 [EOF]
VIPQ2_EXTDAT: default:vvvvv:1000:512:: EXT was configured 前観たリアルタイムの放送だと
IOCバッハ会長が
IOCバハ会長となってた Python始めましたw
まだ片足の指先を踏み入れた程度だが
目標はUWSCをPythonに置き換え
環境はWindows10で主にWebの自動巡回
コロナ巣籠もりで図書館から適当に5冊入門書借りてきた
図書館だから出来る荒業
第一歩で環境構築だが各入門書の入り口が違う
Pythonのインストールで本家Python、Anaconda、Docker
エディッタがIDLE、Jupyter Notebook、サクラエディッタ、Atomエディッタ
サクラエディッタはUWSCで使ってたので取りあえず本家Pythonとサクラで環境は作ったが
やめた方がいいとかオススメあったら教えてほしい 本家Pythonをドライブ直下とかのわかりやすいところにインストール
エディタはVisual Studio Code
その用途なら重量級のAnacondaは不要 >>82
>>83
エディタはVSCodeがオレもオススメ!
理由は世界的に普及してるから
情報とかプラグインとかが多いし
エディタ本体もプログラミング用だから
普通のテキストエディタより使いやすい >>82
Python2で解説してる書籍は今すぐ投げ捨てろ
その用途だと文字コードで地獄を見るの間違いなし >>82
WindowsでDockerはまだ時期尚早
遅いし何よりDocker Desktopは出たばかり
色々な環境を作ったり壊したりしながら勉強する場合は、本家pythonならpipenvをお勧めする anaconda入れとけばjupyter notebookとかついてくるからな 俺もanacondaがいいと思う。
ライブラリのバージョンが合わなかったりしたとき、
調べたり調整するの面倒だからcleanして、
また簡単にインストールできるから手軽でいい。 そもそもAnaconda+pycharmだけしか入れてないしそういう人は多いんじゃないかと VSCodeってリアルタイムのリンティングできるようになったの >>94
随分前から動いてるよ
動かないのはpython.pythonPathを設定してないのが原因と思われる
Select Interpreterで設定するとpylintをインストールしてエラーが表示されるようになる Pythonの本書いてる人に、何故文字列にダブルクォートじゃなくてシングルクォート使うのか聞いたら、シフト押さなくてもよくて楽だからって言ってた US配列の場合な。イコールもそのまま押せて便利
そのかわりコロンがシフト押さないといけない 久しぶりにanaconda入れたらデフォルトでvscodeついてこなくなった??? >>96
多くのプログラミング言語でダブルクォートは文字列、シングルクォートは1文字としているからだよ。 JavaScript のprettier みたいに、保存したら自動的に、
シングル・ダブルクォーテーションを変えられないのか? C、C#、Javaとかはcharとstringの区別があるからシングルとダブルで区別してるっぽい
Rubyやperlはシングルが単純文字列、ダブルが特殊文字や変数展開あり
php、python、javascriptは基本的にどっちも同じ っぽいってpythonしか使えないやつなんて少数だろうし無理して適当言わなくて良いよ 文字列にシングル入れるときはダブル
ダブルが入るときはシングルって見易くていい仕様だと思うから
下手にエスケープに変換とかして欲しくはないな ソースは一貫したルールで文字列をクオートした方が扱いが楽だと思う >>106
どちらに一貫するのがいいの?
という話でわ? 慣れないことをプログラムするときはコピペで勉強するから、いつの間にか ' と " が混在する。気にしないことにしている SQL => 基本的にダブル
JSON,HTML,XML => シングル
これくらいしか決め事ないな。
あとはフォーマッタが何とかしてくれる。 JSONはダブルじゃないとダメで
SQLはシングルが標準やろ >>111
俺もSQLはダブルクォート
シングルクォートは中で括るために使うからね
sql = “SELECT * FROM hoge WHERE col=‘hage’” そのダブルクォートはSQLではなく、それを使用する言語側の文字列編集だろ >>114
あー、なるほどね
ここPythonスレだから暗黙に
PythonでSQLを記述する場合はダブルクォート
と脳内変換してたよ >>112
SQL injection ですねわかります blackがダブルクォーテーション推しなんだからダブルクォーテーション使え どこにunixが関係するのか全然わからん
SQLの知識がなさすぎならまだわかるけど… sql prepared statement python でggれ pyenvに筆おろししてもらうんだけど何か注意点ある? >>119
シングルクォーテーションとダブルクォーテーションの使い分けができないとUNIX、Linux、Macは使いこなせない。 >>123
シェルの話をUnixって言っちゃうのはいかがなものかと UNIXがなんだと思ってんだよ?
UNIXを作るためにC言語を作り、UNIXのインターフェイスとしてシェルを作った。
そのシェルを効率よく使うためにシェルスクリプトができた。 >>122
今までのRuby on Rails は基本、Mac・仮想OS でLinux だbチたが、
Windows 10, WSL, Ubuntu 18.04 でも、環境構築できるようになった。
VSCode の拡張機能、Remote WSL も使う
Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
rubyのコンパイルに、20分ほど掛かって、
ruby 2.6.6, node 12.16.2 を入れた
yarn は、Windows側に入れて、WSL から、拡張子なしのyarn コマンドを呼べる。
これは、#!/bin/sh で始まるシェルスクリプト
anyenv 公式サイト
https://github.com/anyenv/anyenv
anyenv + macOS環境構築
https://qiita.com/rinpa/items/81766cd6a7b23dea9f3c
anyenv は多言語向きで、rbenv, nodenv, pyenv, phpenv などを同じ使い方で、統一的に扱える。
~/.bashrc に、下の2行を追加するだけで、各言語ごとに追加しないでも良い
export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)" もし、anyenv を使わなかったら、
例えば、rbenv なら、rbenv-installer を実行して、
~/.bashrc に、下の2行を追加する
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
この手順を、nodenv, pyenv, phpenv など、多言語で繰り返す必要がある。
これらの公式サイトを読むだけでも大変。
これを、anyenv では、自動的にやってくれる
それと、一区切りごとに、端末を再起動して、更新を反映し、
rbenv rehash みたいに、rehash して更新を反映する クロスプラットフォームのPythonではあえて等価にしてるのに
下手にUNIXの知識のまま変数展開とか期待して勝手にキレてそう >>126
頼むから無理やりrubyを絡めないで
Pythonはようやく環境構築がpipenvもしくはanacondaに落ち着きつつあるんだから、他はマニアがやればいい rbenv が基本で、皆これを真似て作られた
わざわざ、Python の標準でもない、pyenv を使うという事は、
多言語で、rbenv, nodenv, pyenv, phpenv なども使うという事だろ
だったら日本人が作った、anyenv で同じ使い方で、統一的に扱える! web 系は、1つの言語じゃ無理。
どの言語でも、Node.js が必須だから
例えば、Microsoft のサイトでは、Node.js のバージョンマネージャーに、NVM を使っている
Ruby はrbenv, Python はvenv、Node.js はNVM と、
各言語で、使い方が異なるのが面倒くさい
たかがバージョンマネージャーぐらい、同じ使い方で統一してもらいたい。
それで日本人が、anyenv を作った! >>125
なんの説明にもなってなくて笑うわ
知ったかガイジ乙 >>131
Mac に Python3 をインストールしたいんですけど、
Homebrew 無しで pipenv をインストールする標準的な方法を教えてください Mac は、Ruby 製のHomebrew で出来ている!
Homebrew を使わないで、何もできないだろw 一区切りごとに読点を打つのはやめてくれませんかね。
それに無駄に多い感嘆符も。 シェルスクリプトで引用符というより``を使うようになって成長したと感じた
結局pythonでsubprocess使った方が便利なのでシェルスクリプト使わなくなったω >>139
この無駄な特徴のお陰で例のRubyバカだと一目で分かってスルーできるから、無くなると困るな。
まあ一番はこのバカがコテ付けるかそもそも書き込みやめるかすればベストなんだけど、壊れたロボットには言葉が通じないから諦めてる。 Pythonスレなんだからこのキチガイを判定するAIを作れよ >>137
$ pip install -U pipenv
ただpipenvはenvって名前付いてるけど複数バージョンのPythonを管理するものじゃなく
プロジェクト単位の依存ライブラリをPipFileで管理するパッケージマネージャー
JavaScriptのnpm(package.json)やRubyのbundler(Gemfile)にあたるもの
バージョンマネージャーはRuby君が言ってるようにpyenvが標準になりつつある 環境構築の定番が毎年変わるのはOSSの面倒なところだな まぁPythonのビルドはめんどいから、pyenvで楽できるのは良い
仮想環境はpython -m venvで調達できるし、いたれりつくせりですな > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw >>144
macOS標準の Python2 でも pip が使えるのは当たり前ですよね
質問の内容は、Homebrew 無しで Python3 の環境構築を実現する方法です
もちろん環境構築には複数バージョンやパッケージマネージも含みます
ただ単に Python3 を使うだけなら、Anaconda がありますけど、
そこからのステップアップは Mac だと(Ruby に頼らなければ)無理なんでしょうか? ctypesでDLLに配列の途中要素のポインタ渡すのってどうすればいいの?
ary = (c_ubyte * 10)() で配列作ったとして、
これの3番目の要素のポインタを渡したいんだけど、
pointer(ary)[2]とか、poiter(ary)+2とかできなくて困ってる
もしかしてポインタ演算自体できない感じ? 漏れは、無数のMac の環境構築のサイトを見てるけど、
Ruby 製のHomebrew を使わないものは見たことない!
一方、Windows では、chocolatey を使わない人も多いけど
例えば、rbenv-installer では、
MacのHomebrew か、Linux のgit でコンパイルか、処理を分けている
gitなら、build-essential などのコンパイルツールが必要。
Macなら、Xcode だろ
Macで、Homebrewを使わない場合に、正常にコンパイルできるかどうか、分からない。
まず、そういうことをする人が、いない。
Mac/git/Xcode のパターンだろ。
こういう例外を、anyenv の開発者がテストしているかどうか、分からない
#!/bin/bash
homebrew=
# -p : タイプが「file(実行ファイル)」の時のみ実行ファイルの絶対パスを出力する
# (それ以外のタイプの場合は何も出力しない)
type -p brew >/dev/null && homebrew=1
if [ -n "$homebrew" ]; then
# Homebrew で処理
brew update
brew install rbenv --without-ruby-build
else
# git でコンパイル
fi Mac には標準で、Ruby が入っているだろ。
そのバージョンが古くなければ、Homebrew も使える
わざわざ、Homebrewを使わないようにする、理由が分からない。
anyenv で、rbenv, nodenv, pyenv, phpenv と入れていけば良いだけ
Homebrewを使わないというのは、特殊中の特殊だから、
そういう手順が、anyenv で動くかどうか、誰にも分からない。
誰もそういう事をしないから、テストされていない
>>150
にも書いた通り、シェルスクリプトを読んでいって、
Homebrewを使わない場合の手順で動くかどうか、確かめるのが大変
基本的に、Mac/Homebrew か、Linux/git/build-essential の2タイプ。
Mac/git/Xcode みたいな事を考慮していないと思う
MacはBSD で、LinuxとはOS が異なるから、
Homebrew を使わない場合に、動くかどうか分からない >>148
ステップアップが意味するところが分からないけど、Mac使いならhomebrewは入れた方が良いね
それとは別に、自分の好きな構築方法はpython3をminicondaでインストール
あとは一般論
機械学習関係でLinux使いなら環境構築はanacondaか最新のdockerがいい
Nvidiaの諸々の依存関係をセットアップするのがすごい楽になる
それ以外ならpyenv+pipenvかanacondaになる
どちらを使うかは宗教論
anacondaはライブラリも含めてダウンロードするので、例えばcentos6.xでglibcが古くてpython3が動かない場合でも最新版が動かせる
anacondaを使う場合で問題になるのは、デフォルトのPythonより優先順位を高くした場合に全く関係ないアプリが動かないことがある
.bashrcや.bash_profileから初期設定を抜くなりbase状態からdeactivateすればもちろん動くが、いちいちめんどくさい
あとは有償のmklライブラリがanacondaはただで使える
それが元で古いMacだとAVX命令がエラーになるとかあってpipでnumpyを入れ直すとか、まぁ細かいことを言うと色々ある homebrewとは何かとググったら要はrpmやdebの類か。
そんなもんに依存しなきゃ使えないマカーやどざーってやっぱりバカなんじゃないの。 > お前は毎朝起きるたびに俺に負けたことを思い出すよ^^
あー、ホンッとに思い出すなあ(笑)
キチガイの嘘つきの低レベルFランの、
朝鮮ゴキブリBot君は、
チョン独特の「なにもできないけど俺のほうがジャップより偉い!」的な
ことはよーくわかったよ。
ホントなにもできない朝鮮ゴキブリBot君!
クソチョンw >>149
とりあえずlongに変換してから計算してpointerに変換 >>155
別に依存しなくてもインストールできるけど、使えば手間が省けるだけ。winでもわざわざ依存ライブラリを各所から拾ってくるのは面倒でしょ?そこを自動でやってくれる。
cuiが嫌いならanacondaやdockerをguiでインストールすることもできる。選択肢が多い分、ほかのpfより優れてると思うよ。(本件に限れば)
あと、homebrewと比べるならrpmやdebじゃなくてyumやaptな。 パッケージは便利な反面
何でもパッケージに頼ると
数年後とかに同じ環境を
再現しようとしたとき困る
なので全自動じゃなく
手動で現時点のバイナリ等は
そのまま後で使える様に
ローカルで保存する習慣にしてる >>159
>数年後とかに同じ環境を再現しようとしたとき困る
むしろそういう時に困らないようにパッケージマネージャー使うんだけど RUN pip install -r requirements.txt 法的/倫理的な問題があったりして削除されるようなものを除けば
パッケージリポジトリが崩壊しない限り落とせるでしょ
それにパッケージマネージャー使ってもローカルに落としてるんだけど手動でやるメリットある? >>159
その目的ならdockerやvirtual box等の仮装マシンが向いてるかな
pip freezeでrequirements.txtを作ったりpipenvで環境をまとめたりしても、python以外のところで動かないことはあるしね たしかにvenvで十分なんだが、プロジェクトごとにpythonをインストールしているような
なんともいえん気分になる。 HDD単位が数億数兆という富豪の時代なんだからpythonの一つや二つや10や20でケチケチしないのがホンモノの富豪 >>157
全然わかってなくて申し訳ないけど、
c_ubyte配列をc_ulong配列にする必要があるって事? anyenv は多言語向きで、rbenv, nodenv, pyenv, phpenv などを同じ使い方で、統一的に扱える。
~/.bashrc に、下の2行を追加するだけで、各言語ごとに追加しなくても良い!
export PATH="$HOME/.anyenv/bin:$PATH"
eval "$(anyenv init -)"
global でシステム全体、local でそのプロジェクトだけのバージョンを切り替える。
コマンドラインから一時的に切り替えたい場合は、shell を使う。
すると、環境変数 RBENV_VERSION に設定される
rbenv global 2.6.6
rbenv local 2.6.6
rbenv shell 2.6.6
apt などで、/usr/bin/ruby へインストールした、バージョンを使いたいなら、
rbenv global system
rbenv local system
rbenv shell system
この使い方が、全言語で統一されているから楽
$ which ruby
~/.anyenv/envs/rbenv/shims/ruby
$ which node
~/.anyenv/envs/nodenv/shims/node >>149
誰も答えないので答えてみる
ary = (c_ubyte * 10)()
# C言語のp = &ary[2] と等価
p = byref(ary, sizeof(c_ubyte) * 2) >>170
>>157の名誉のために同じ動作をする別のコードを示そう
addr = ctypes.addressof(ary) # addrはint型なので演算可
p = ctypes.cast(addr + 2, c_void_p)
64ビットアーキテクチャになってアドレスサイズが8バイトになったので
C言語のint型(4バイト)ではなくlong型(8バイト)で扱う必要がある
ただpython3はlong型がなくなりint型に統合したのでそのまま扱える >>154
久しぶりに勉強になるレス。参考になった。
ところでWinで開発してLinuxに持って行ったりするんだけど、アーキテクチャによって環境構築が違うから大変。Dockerで解決するかな?試せよって話だが。 >>174
mac, win, linuxを行き来してるけど、python3になってからはあまり困ったことはないかなぁ
OSを意識するのはsetup.pyを書くときとC言語をバインドするときくらい CentOS7でpyenv使ってみたけど、やっぱディストロ側のパッケージを入れるのがめんどくさいな
ここらへんも自動化できないものかね コンテナはあんまり使う気にならない
コマンドで自動化したい・・・ >>178
コンテナ使わないならansibleかね ■ このスレッドは過去ログ倉庫に格納されています