- 1 名前:デフォルトの名無しさん mailto:sage [2018/03/17(土) 16:32:25.91 ID:S1lkLDnv.net]
- このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。 エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。 騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。 次スレは >>985 辺りで 前スレ くだすれPython(超初心者用) その36 mevius.2ch.net/test/read.cgi/tech/1514805522/
- 561 名前:デフォルトの名無しさん [2018/04/22(日) 22:24:34.38 ID:SkZxcoIM.net]
- wxpythonでボタンをクリックしたら別のpyに書いたウィンドウを表示させているのですが、開いたpyウィンドウを閉じるともとのボタンをクリックしても再実行されません。
importは一度だけというのはわかっているのですが・・・ どのような記述をすれば閉じても何度でも再実行できるようになるのでしょうか。 教えて下さい。
- 562 名前:遊園地 mailto:age [2018/04/22(日) 23:01:16.94 ID:S/aJuoMN.net]
- >>544
https://ideone.com/ に全部 ソース貼れw それを見てから応える
- 563 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 23:03:22.02 ID:6LlZ0HWt.net]
- wxpython を説明している、サイトを見て、勉強する
- 564 名前:デフォルトの名無しさん mailto:sage [2018/04/22(日) 23:35:12.62 ID:GW1847bJ.net]
- >>544
5chのPythonスレのレベルを超えた質問 teratailで尋ねたほうが良いよ >>546 このスレで出来る回答はそんなもんだよな
- 565 名前:デフォルトの名無しさん [2018/04/23(月) 08:33:18.26 ID:1C6OTR8X.net]
- https://ideone.com/OtTmrTです!
- 566 名前:遊園地 mailto:age [2018/04/23(月) 10:37:49.00 ID:/QV9I6Db.net]
- >>548
実行ボタン処理が定義されて無いから? 詳しい人、どうぞww
- 567 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 11:17:30.25 ID:DP/vD1RL.net]
- pythpn初心者だけどオブジェクト指向分からな過ぎて死にそうです
何かおすすめの本ありますか?
- 568 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 11:18:44.42 ID:zsG77YNH.net]
- 死んだ方がいいよ
- 569 名前:遊園地 mailto:sage [2018/04/23(月) 11:30:33.57 ID:/QV9I6Db.net]
- 厳し過ぎやろ
俺が引いてんじゃねぇか!ww [遊園地は]使い分けると深みに嵌まるから、この形式
- 570 名前:だけ抑えて後は垂れ流しだな。
https://ideone.com/VuRClI [] - [ここ壊れてます]
- 571 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 13:03:27.78 ID:HUlTGC1I.net]
- >>548
とりあえず、ボタン押してフレーム出すのはこう。 import wx class ChildFrame( wx.Frame ): def __init__( self, parent ): super().__init__(parent, wx.ID_ANY) sizer = wx.BoxSizer(wx.VERTICAL) lb = wx.StaticText(self, wx.ID_ANY, "Hello!") sizer.Add(lb) self.SetSizer(sizer) sizer.Fit(self) class MainFrame( wx.Frame): def __init__(self): super().__init__(None, wx.ID_ANY ) sizer = wx.BoxSizer(wx.VERTICAL) btn = wx.Button(self, wx.ID_ANY, "Push Me!") sizer.Add(btn) self.SetSizer(sizer) sizer.Fit(self) btn.Bind(wx.EVT_BUTTON, self.on_button) def on_button( self, evt ): child_window = ChildFrame(self) child_window.Show() if __name__ == "__main__": app = wx.App() frame = MainFrame() frame.Show() app.MainLoop()
- 572 名前:スッキリ厨 mailto:sage [2018/04/23(月) 13:31:39.89 ID:jMm7sVs3.net]
- >>550
まずこの本で、オブジェクト指向を学ぶ。 スッキリわかる Java入門 第2版、2014 その後、この2冊をこの順に読む。 たのしいRuby 第5版、2016 みんなのPython 第4版、2017 この順番でやらないと、理解できないはず。 特に、オブジェクト指向の本は「スッキリ」しか存在しない
- 573 名前:デフォルトの名無しさん [2018/04/23(月) 14:31:38.43 ID:Lf5qXYif.net]
- >>553さん
ありがとうございます! ただボタンを押した後のフレームを出す処理を他のファイルに書いています。 そういうやり方は一般的ではないのでしょうか? def on_button( self, evt ): import aaa のようにaaa.pyを呼び出して処理させたいのですが、一回表示させて閉じると再表示させることができません。
- 574 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 14:47:47.40 ID:HUlTGC1I.net]
- >>555
ファンクションの中でimportして、しかもそれだけでウィンドウを出すってのはすごく変。 四の五のいわずにやめた方がいい。 大体そんなやり方してたら親ウィンドウすら渡せない。
- 575 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 14:51:26.42 ID:HUlTGC1I.net]
- >>555
子ウィンドウのコードを別のファイルにしたいなら、ChildWindowの定義部分を別ファイルにしてimportすればいい。
- 576 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 15:10:44.56 ID:Sx+lupQ0.net]
- >>555
偉大なるこのスレの遊園地様が必死に質問しているteratailで聞いたほうがいいよ 処理を書いている他のファイルも提示して動くようにしてくださいと依頼すれば良い
- 577 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 15:15:35.49 ID:sVI7fOBi.net]
- importは読み込んで実行というより
定義や宣言を読み込むため(だけ)に使うのが普通よね
- 578 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 15:19:13.02 ID:Sx+lupQ0.net]
- >>557
>ChildWindowの定義部分を別ファイルにしてimportすればいい ChildWindowの定義部分がある別ファイルのaaa.pyをimportしているのが on_buttonのimport aaaなんだろ
- 579 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 15:32:45.72 ID:sVI7fOBi.net]
- import aaa
… def on_button(…): child_window = aaa.ChildFrame(…) child_window.xxx = yyy … こんな感じかね
- 580 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 15:57:59.47 ID:sVI7fOBi.net]
- ついでにimportで1回しか実行されない原因はこれ
python.matrix.jp/pages/tips/import.html#id4 C言語でいうインクルードガード的なのが働いてる
- 581 名前:デフォルトの名無しさん [2018/04/23(月) 17:22:58.10 ID:Lf5qXYif.net]
- ありがとうございます、大変勉強になりました。
頑張ります!
- 582 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 17:39:53.20 ID:HUlTGC1I.net]
- >>560
wx.Frame.Showをimportするファイルに書くなって意味なんだけど、伝わりませんか、、、そうですか、、、すみません。
- 583 名前:デフォルトの名無しさん [2018/04/23(月) 18:24:03.12 ID:NdLOIshu.net]
- わたしに
- 584 名前:は伝わりました! []
- [ここ壊れてます]
- 585 名前:遊園地 mailto:sage [2018/04/23(月) 18:38:50.30 ID:/QV9I6Db.net]
- >>555
.pyファイルを1つの関数が代わり使うとは大胆だな。 単純に、 >>561 import aaa aaa.pyファイルの中身を関数かクラスにする。
- 586 名前:遊園地 mailto:sage [2018/04/23(月) 18:42:03.15 ID:/QV9I6Db.net]
- 遊園地ww 公式ですと、こんな感じですなww
----aaa.py---- import bbb bbb.A() ----bbb.py----- def A(): print('Hello World')
- 587 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 20:14:08.95 ID:vFsvQnxK.net]
- >>555
もしかしてimportするスクリプトにグローバルに書いてるのか もしそうなら、面倒でも何か関数をdefして(例えばopen_window() とか名前を付けて) その中にグローバルで書いてた処理を移動すべし def on_button( self, evt ): import aaa aaa.open_window() という風にすれば、on_button() を呼び出す度にopen_window()が確実に実行される
- 588 名前:デフォルトの名無しさん [2018/04/23(月) 21:07:24.03 ID:6SrNRF4N.net]
- 568さん、今日1日でここまで教えていただけると思わなかったです!
ほんとありがとうございます!
- 589 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 21:34:33.91 ID:Mytq4Fn/.net]
- >def on_button( self, evt ):
>import aaa のaaa.pyのどんなことを書いてあるんだろ? >>569は >>553のdef on_button( self, evt ): の処理部をaaa.pyに書いて 動くように出来る?
- 590 名前:553 [2018/04/23(月) 21:59:54.79 ID:3UVOgM3N.net]
- ああわかったよ、書けばいいんだろ、、、
>>>aaa.py import wx class ChildFrame(wx.Frame): <中略> >>>main.py import wx from aaa import * class MainFrame(wx.Frame): <中略> def on_button(self, evt): child_frame = new ChildFrame(self, wx.ID_ANY) child_frame.Show()
- 591 名前:553 [2018/04/23(月) 22:06:09.88 ID:3UVOgM3N.net]
- すまん、インデントが消えた。
ちなみにwxの子ウィンドウには親の参照渡しとかないと、親を閉じたときにアプリケーションが勝手に終了してくれないから アプリケーションのメインウィンドウ以外には親を渡した方が良い。 これはaaa.pyに子ウィンドウを表示するグローバル関数を定義する場合も同じ(関数の引数として親を渡せるようにする) じゃないと、出したフレーム片っ端から閉じないとプログラム終了しなくなる。
- 592 名前:553 [2018/04/23(月) 22:17:49.55 ID:3UVOgM3N.net]
- new ってなんだよ、、俺。
「new ChildFrame(・・・」のnewはいりません、ごめんなさい。
- 593 名前:デフォルトの名無しさん [2018/04/23(月) 22:22:44.80 ID:6SrNRF4N.net]
- 奥深いっす…でも楽しみです!
ありがとうございます!
- 594 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 22:34:59.73 ID:M4g+UNEZ.net]
- >>572
俺、超低脳でさっぱり分からないんだけど、 >wxの子ウィンドウには親の参照渡しとかないと、親を閉じたときにアプリケーションが勝手に終了してくれない その親の参照渡しは>>571のどこに記述されているんだ?
- 595 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 22:36:33.56 ID:3UVOgM3N.net]
- >>575
ChildFrameのコンストラクタの第一引数。
- 596 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 22:40:44.90 ID:3UVOgM3N.net]
- ていうとわかりにくいか?
child_frame=ChildFrame(self・・・ のself
- 597 名前:デフォルトの名無しさん [2018/04/23(月) 22:51:42.66 ID:jJWBqt/a.net]
- 遊園地召喚
- 598 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 23:04:48.51 ID:M4g+UNEZ.net]
- >>577
俺の知識では理解は無理だが、その部分なのか(そもそも、クラスを理解している奴なら質問しないだろうが) ついでに、 >>553で>>571のような回答をくれればよかったんだろうがな(元の質問が別ファイルに子windowの記述がある) 一方、>>574は素直に>>553を>>570のようにするにはどうすれば良い?と質問すればよかったんだろうが 超初心者は俺もだがコミュ力ないから回答得るのに遠回りするよな このスレは>>576で出たコンストラクタも、これ何?レベルの奴が質問だろうからな
- 599 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 23:14:47.88 ID:3UVOgM3N.net]
- すまんね。
553書いたときはクラス一つ別のファイルに移動してそれを使うことが出来ない人がwx使ってウィンドウ出せるなんて思ってなかったんだよ。
- 600 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 23:27:13.13 ID:M4g+UNEZ.net]
- >>553
コミュ力ない人の質問だと本当に教えてほしいことが相手に伝わらないことが多いから 回答する人は要エスパー力だからな
- 601 名前:デフォルトの名無しさん mailto:sage [2018/04/23(月) 23:31:46.35 ID:M4g+UNEZ.net]
- >>58
- 602 名前:1
は>>580へ []- [ここ壊れてます]
- 603 名前:デフォルトの名無しさん [2018/04/23(月) 23:52:25.59 ID:2sWKRyd2.net]
- 以下のコードを実行するとエラーになります
どうすればいいのでしょうか・・・ y = 10 print(f'test y = {y}')
- 604 名前:デフォルトの名無しさん [2018/04/23(月) 23:56:38.04 ID:2sWKRyd2.net]
- すいません3.6から実装されたf文字列というんですね
3.5だからエラーになるわけだ(´・ω・`)
- 605 名前:遊園地 mailto:age [2018/04/24(火) 08:01:24.83 ID:G5LttnIJ.net]
- 別バージョンのpython入れてから、物凄いトラブってる。
dpkg-deb: エラー: サブプロセス ペースト がシグナル (Broken pipe) によって強制終了されました 処理中にエラーが発生しました: フォーカスの処理とかしてないが、呼び出すだけなら、コレで良い? 試しては無い。 def Sample(): sub_win = Tkinter.Toplevel() sub_win.title(u"Sub Process") sub_win.geometry("400x300") Sample()
- 606 名前:デフォルトの名無しさん [2018/04/24(火) 08:37:58.18 ID:AdXJnnP5.net]
- 馬鹿には無理
- 607 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 10:09:50.76 ID:jhtbgK3V.net]
- jupyter labとnotebookどっも括弧やクォーテーションの補完が効かないんだけどデフォ?
それともなんかおかしい?
- 608 名前:デフォルトの名無しさん [2018/04/24(火) 14:47:46.65 ID:xQCRvp4n.net]
- 553さんは普段仕事でpython利用されてるんですか??
- 609 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 14:48:37.60 ID:QI4dBYy7.net]
- マルチ拝観
- 610 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 15:37:30.64 ID:WvdWgq+O.net]
- 現場ですぐに使える! Pythonプログラミング逆引き大全 313の極意
って初心者向き?
- 611 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 16:20:06.53 ID:dUrN2wLw.net]
- >>587
デフォルトでは補完されることになつているはず。 今の状態だとIpythonでも補完できないと思うが?
- 612 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 17:07:25.08 ID:Mdvhp2Yn.net]
- すみません、質問です。
初歩的なことかもしれませんが、 Pythonを使うエディタで秀丸使ってるんですけど、 他のsublimeとかのほうが使いやすいですか? 秀丸だとインデント打つのが面倒で・・・。 ご回答よろしくお願いします。
- 613 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 17:26:32.99 ID:KvfUX4Up.net]
- そのうちプログラム打つのが面倒とか言い出しそうだな
- 614 名前:デフォルトの名無しさん [2018/04/24(火) 17:28:48.89 ID:QI4dBYy7.net]
- 秀丸は割と良い方
- 615 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 17:39:44.58 ID:1D4v+3Mx.net]
- VSCode は?
- 616 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 17:41:28.56 ID:ftYeuzTX.net]
- >>588
本業はc++ そっちでwx使ってるから、wx周りはそこそこ詳しいってだけ。 pythonは趣味。
- 617 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 18:12:28.83 ID:eLoUapjt.net]
- 意地張ってないでpycharmにしなさい。どうせpythonしか書かないでしょ。
- 618 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 19:36:02.20 ID:8pq7pLvE.net]
- >>592
俺は扱えないけど、プログラムのためのエディタはvimが良いらしいらしいよ >>597 低脳にはそんな素晴らしいIDEは猫に小判だろう 書くPythonだって100行もいかないだろうし、そして、モジュールの中を見ることもないだろう
- 619 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 19:47:17.37 ID:h25jwsU+.net]
- >>591
ipythonでも補完できない。なんかなくちゃいけないファイルが無いんかなあ、探してみます。
- 620 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 20:18:42.40 ID:Mdvhp2Yn.net]
- >>598
vimは関係ないですよ。 プログラミング書くのに適してませんし。 >>598 趣味でPythonやっている>>553さんに「低脳」って言うのは言い過ぎだと思いますよ。
- 621 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 20:28:24.71 ID:PPDUXdzL.net]
- Vimが適してないとかアホか
お前がプログラミングに適してねえよマヌケ 一生懸命ひでまるおしてろ
- 622 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 20:35:04.99 ID:Mdvhp2Yn.net]
- vimでプログラミングするって冗談じゃなかったのかw
これは真性だな・・・ 俺はもう実務でPython扱ってるよ すでに300行以上書いた 明日からちゃんとしたエディタインストールするわ あとみんなレスするときはアンカー(>>)をつけるように 誰に対して言ってるのかわからない独り言みたいだからね
- 623 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 20:46:20.64 ID:yGK7zMMt.net]
- 配列の例題なのですが
str = "Hello" str2 = "" for n in str: str2 = str2 + (n * 2) + '~' print(str2) これのstr2 = ""は何をする為に必要なんでしょうか?
- 624 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 20:55:41.97 ID:8pq7pLvE.net]
- >>603
試しに、str2 = "" を #str2 = "" して見ればOK str2 = [] や str=0でもOKだが
- 625 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 20:57:15.34 ID:JriH9xMX.net]
- 試しにコメントアウトしてみ?
- 626 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 20:58:23.94 ID:JriH9xMX.net]
- あら、先越されたw
- 627 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 20:59:12.40 ID:Mdvhp2Yn.net]
- >>604
えらい! ちゃんとアンカーつけられたじゃないかw 今日も仕事頑張ったし もう寝るわ おやすみノシ
- 628 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 21:04:38.83 ID:yGK7zMMt.net]
- コメントアウトしたらNameErrorと出ました。
これはstr2=""でとりあえず文字として定義してるってことですかね
- 629 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 21:07:01.25 ID:8KBFlzDM.net]
- >>600
「 ̄ `ヽ、 ______ L -‐ '´  ̄ `ヽ- 、 〉 / ヽ\ / // / / ヽヽ ヽ〈 ヽ、レ! { ム-t ハ li 、 i i }ト、 ハN | lヽ八l ヽjハVヽ、i j/ l ! /ハ. l ヽk== , r= 、ノルl lL」 ヽN、ハ l ┌‐┐ ゙l ノl l ヽトjヽ、 ヽ_ノ ノ//レ′ r777777777tノ` ー r ´フ/′ j´ニゝ l|ヽ _/`\ 〈 ‐ 知ってるが lト、 / 〃ゝ、 〈、ネ.. .lF V=="/ イl. ト |お前の態度が とニヽ二/ l ヽ.|l 〈ー- ! `ヽ. l |l気に入らない lトニ、_ノ ヾ、! |l__________l| \ ソ
- 630 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 21:07:54.72 ID:ChFyzKk0.net]
- >>607
まだ見てるよね ちょっとお母さんと代わってくれる? お宅のお子さんはちゃんと小学校に通わせましたか? お猿の学校では駄目ですよ って教えてあげないといけないんだ
- 631 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 21:20:09.03 ID:8pq7pLvE.net]
- >vimは関係ないですよ。
>プログラミング書くのに適してませんし。 vimを使っている奴は、真性だな・・・と主張しているのか
- 632 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 21:33:10.24 ID:dUrN2wLw.net]
- >>603
変数にstrが許されるのは小学生まで
- 633 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 21:46:40.49 ID:gtAr5qY0.net]
- 俺はvim使ってるけど確かにここの超初心者には勧めたくはないな
- 634 名前:デフォルトの名無しさん [2018/04/24(火) 21:48:12.19 ID:UZrLd4N8.net]
- まさかのリアル厨房ワロタw
- 635 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 21:48:59.19 ID:T7P20eIK.net]
- 実際vimでコーディングする人は多いよ
きちんとカスタマイズしてやればIDEより軽いし機能も必要十分で普通に実用的
- 636 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 21:52:23.15 ID:8pq7pLvE.net]
- >>608
何のために、str2=""でとりあえず文字として定義が必要と思った? str2 = str2 + (n * 2) + '~' を str2 += (n * 2) + '~' として、とりあえず文字として定義を止めるとNameErrorと出るか? ついでに、大きく変更して str2 = 1 + 1 にしたら、str2はNameErrorとでるか? 最後に、NameErrorと出たのは str2 = str2 + (n * 2) + '~' のどれだ?(一番目のstr2、2番目のstr2、(n * 2)、'~') 中学あたりの数式計算で、 x = 1 y = y+x としたとき、yの値は得られると思うか
- 637 名前:デフォルトの名無しさん [2018/04/24(火) 21:55:10.72 ID:BAt1Eldp.net]
- ぶっちゃけ君ら何歳?
- 638 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 21:56:45.13 ID:T7P20eIK.net]
- >>608
for文の中でstr2から値を参照しようとしてる 定義していない変数を参照することは出来ないから、空でもいいから初期化しないといけない 初期化していないと「空であるかどうか」すら判定出来ない
- 639 名前:デフォルトの名無しさん [2018/04/24(火) 22:00:19.23 ID:UZrLd4N8.net]
- オレ2年やけど体壊して1年休学してるから本当は3年やからな
なめんじゃねーぞ
- 640 名前:遊園地 mailto:age [2018/04/24(火) 22:24:57.07 ID:G5LttnIJ.net]
- 授業で入るなら、小中学生が増えてもおかしない。
ただ、5chに来るかは来ないかだと、来ないだろうけど。
- 641 名前:遊園地 mailto:sage [2018/04/24(火) 22:26:08.73 ID:G5LttnIJ.net]
- >>592
Geany使ってる。
- 642 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 22:32:00.39 ID:yGK7zMMt.net]
- >>616
>>618 空っぽの変数として定義する必要があったってことですね。 プログラム初心者なもんで申し訳ない・・
- 643 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 22:41:45.33 ID:WvdWgq+O.net]
- >>592
普通に秀丸使ってるけどな なんだかんだ言っても使い慣れたエディタが楽
- 644 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 22:58:24.77 ID:DKMQJI1I.net]
- pythonで作ったツールをexe化して配布しようとおもうんですけど
二次配布防止するにはどうすればいいですか? 今考えてるのはアイパスとコンピュータ名とかでhash値作ってサーバーに登録。 ツール起動時に毎回サーバーに問い合わせる、とかです。 ライセンスというほど大それたものでもないので、理想はサーバーつかわずに 初回に起動したそのpcじゃないと使えなくして、からくりがバレれば二次配布できちゃう 程度の精度でもいいんですけど。。
- 645 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 23:00:51.21 ID:8KBFlzDM.net]
- exeを入れたzipにパスワードかけろ
- 646 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 23:01:00.08 ID:1D4v+3Mx.net]
- ドングルとか?
- 647 名前:遊園地 mailto:age [2018/04/24(火) 23:01:33.49 ID:G5LttnIJ.net]
- Q
多言語みたいに型だけ宣言して置く方法とか有りますか? int i print(type(i)) # era- SyntaxError: invalid syntax
- 648 名前:デフォルトの名無しさん [2018/04/24(火) 23:02:26.10 ID:BAt1Eldp.net]
- HDD/SSDに署名程度で良くね
- 649 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 23:13:10.05 ID:WvdWgq+O.net]
- >>624
大した物でないならならzipにパスワードで良いんじゃね? そのサーバ維持やメンテナンス延々とするつもりならいいだろうがドメイン維持だけでもそれなりのコストになりそう
- 650 名前:遊園地 mailto:sage [2018/04/24(火) 23:19:38.12 ID:G5LttnIJ.net]
- >>624
起動時に、ユーザー名を拾って来て、適当なファイルに暗号化して入れる。 そのユーザー名と一致しなかったら、メッセージボック等を出して終了
- 651 名前:遊園地 mailto:sage [2018/04/24(火) 23:22:31.35 ID:G5LttnIJ.net]
- バツ 起動時に
マル 初回起動時に
- 652 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 23:24:30.20 ID:vOUBS5cl.net]
- pythonをバイナリ化出来たとしても、中の依存モジュールに1つでもGPLが入ってたらソース公開しないとライセンス違反になる
結局ソース解析されるだけの様な気がするけど…
- 653 名前:遊園地 mailto:sage [2018/04/24(火) 23:24:54.14 ID:G5LttnIJ.net]
- win機で動くかわからないけど、下記が動作するか調べてみたら。
import os T=EMAIL_SUBJECT_PREFIX = '[%s]' % os.uname()[1] print(T)
- 654 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 23:24:56.76 ID:DKMQJI1I.net]
- >>629
zipにパスワードって解凍して中身取り出せば再配布し放題ですよね? レンタルサーバーは広告ありの無料とかでよいかなぁと。
- 655 名前:遊園地 mailto:sage [2018/04/24(火) 23:26:30.59 ID:G5LttnIJ.net]
- んごぉーーー
from socket import gethostname T=EMAIL_SUBJECT_PREFX = '[%s]' % gethostname
- 656 名前:()
print(T) [] - [ここ壊れてます]
- 657 名前:デフォルトの名無しさん mailto:sage [2018/04/24(火) 23:31:45.21 ID:8KBFlzDM.net]
- >>634
じゃあダウンロードサイトにもパスワードかけとけ
- 658 名前:遊園地 mailto:sage [2018/04/24(火) 23:37:44.84 ID:G5LttnIJ.net]
- >>634
心配しなくても、その程度のソフトなら二次配布なんて しないよ。
- 659 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 01:21:27.42 ID:kuotvUVn.net]
- >>636
ダウンロードサイトであーだこーだするなら、 ダウンロードさせるexeの内部に毎ダウンロードごとに異なるパスワード(hashとか) を組み込んで、管理サーバーでこのパスとPC固有情報を関連付けすれば良いんじゃないのか。 管理サーバーを立てるぐらいの人ならこれぐらいは頑張って実現するだろう >>624 それでexeの二次配布防止なるのか? exeは全て共通なんだろ。それで 管理サーバーはPC登録情報からexeが2次配布利用であると判断するんだ? PCが登録しているかはわかると思うが
- 660 名前:デフォルトの名無しさん mailto:sage [2018/04/25(水) 02:36:01.53 ID:3okspJRg.net]
- オープンソースのライセンスを無視してバイナリ配布して
さらに自分だけコピープロテクトを掛けたりしたらサイトが炎上しそうだな importするモジュールの選択にはくれぐれも気をつけてくれ
- 661 名前:デフォルトの名無しさん [2018/04/25(水) 04:16:24.63 ID:wUGQlgZi.net]
- 全部バイナリ化せんでも
肝心な部分だけDLL化pydとかpyc化して それが無いと動かないようにするだけでもいいのに
|
|